编程语言
首页 > 编程语言> > JavaScript 运算符优先级

JavaScript 运算符优先级

作者:互联网

运算符优先级

 /*
        运算符优先级

        优先级   运算类型                关联性     运算符
        21        圆括号                 n/a        ()

        20        成员访问               从左到右    XXX . XXX         e.g. person.name
                  需计算的成员变量       从左到右    XXX [ XXX ]
                  new(带参数)            n/a         new XXX (XXX)    e.g. new Person ('小明')
                  函数调用               从左到右    XXX (XXX)         e.g. getValue(name)
                  可选链                 从左到右    ?.                e.g. obj.first && obj.first.second = obj.frist?.second

        19        new(无参数)            从右到左    new XXX            e.g. new Person()

        18        后置递增                n/a         XXX ++           e.g. i++
                  后置递减                            XXX --           e.g. i--

        17        逻辑非                  从右到左    !XXX             e.g. !person.money
                  按位非                              ~ XXX
                  一元加法                            + XXX             e.g.  + 10
                  一元减法                            - XXX             e.g.  - 10
                  前置递增                            ++ XXX            e.g.  ++ i
                  前置递减                            -- XXX            e.g.  -- i
                  typeof                              typeof XXX       e.g.  typeof Number
                  void                                void XXX
                  delete                              delete XXX       e.g. delete person.money
                  await                               await XXX

         16       幂                     从右到左     XXX ** XXX

         15       乘法                   从左到右     XXX * XXX          e.g. 3 * 5
                  除法                                XXX / XXX         e.g. 15 / 5
                  取余                                XXX % XXX         e.g. 3 % 5

         14       加法                   从左到右     XXX + XXX          e.g.  1 + 1
                  减法                                XXX - XXX         e.g.  3 - 2

         13       按位左移               从左到右     XXX << XXX
                  按位右移                            XXX >> XXX
                  无符号右移                          XXX >>> XXX

         12       小于                   从左到右     XXX < XXX             e.g. 3 < 5
                  小于等于                            XXX <= XXX           e.g. 5 <= 5
                  大于                                XXX > XXX            e.g. 5 > 3
                  大于小于                            XXX < XXX             e.g. 3 < 5
                  in                                  XXX in XXX           e.g. money in person
                  instanceof                          XXX instanceof XXX   e.g. arr instanceof Array

         11       等于                    从左到右    XXX == XXX
                  不等                                XXX != XXX
                  全等                                XXX === XXX
                  不全等                              XXX !== XXX

         10       按位与                  从左到右    XXX & XXX

          9       按位异或                从左到右    XXX ^ XXX

          8       按位或                  从左到右    XXX | XXX

          7       逻辑与                  从左到右    XXX && XXX

          6       逻辑或                  从左到右    XXX || XXX

          5       空值合并                从左到右    XXX ?? XXX         当左侧为null 或 undefined时,返回右侧数据

          4       三元运算符              从右到左    XXX ? XXX : XXX

          3       赋值                    从右到左    XXX = XXX
                                                      XXX += XXX          e.g. x += y => x = x + y
                                                      XXX -= XXX          e.g. x -= y => x = x - y
                                                      XXX **= XXX         e.g. x **= y => x = x ** y
                                                      XXX *= XXX          e.g. x *= y => x = x * y
                                                      XXX /= XXX          e.g. x /= y => x = x / y
                                                      XXX %= XXX          e.g. x %= y => x = x % y
                                                      XXX <<= XXX
                                                      XXX >>= XXX
                                                      XXX >>>= XXX
                                                      XXX &= XXX
                                                      XXX ^= XXX
                                                      XXX |= XXX
                                                      XXX &&= XXX
                                                      XXX ||= XXX
                                                      XXX ??= XXX

           2        yield                  从右到左   yield  XXX
                    yield*                           yield* XXX

           1        展开运算符              n/a        ... XXX           e.g. { ...values }

           0        逗号                    从左到右  XXX , XXX
    * */

关联性

  /*
        左关联(从左到右): e.g. a OP b OP c => (a OP b) OP c


        右关联(从右到左): e.g. a OP b OP c => a OP
                               a = b = 5 => b = 5 -> a = (b = 5) 赋值运算符的返回结果就是赋值运算符右边的那个值
    * */

标签:XXX,优先级,JavaScript,运算符,从右到左,从左到右,new,OP
来源: https://blog.csdn.net/weixin_44240581/article/details/117049476