JavaScript 运算符优先级

运算符优先级

 /*
        运算符优先级

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

        20        成员访问               从左到右    XXX . XXX         e.g. person.name
                  需计算的成员变量        从左到右    XXX [ XXX ]
                  new()                 n/a        new XXX (XXX)     e.g. new Person ('小明') || 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 Foo = new Foo

        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
    * */

关联性

  /*
        关联性决定拥有相同优先级的运算符的执行顺序
            - 左关联(从左到右):  a OP b OP c => (a OP b) OP c
            - 右关联(从右到左):  a OP b OP c => a OP (b OP c)
                                a = b = 5 => b = 5 => a = (b = 5) 赋值运算符的返回结果就是赋值运算符右边的那个值
    * */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值