JavaScript运算符运算优先级

本文详细介绍了JavaScript中运算符的优先级,从最高优先级的括号运算符到最低优先级的逗号运算符,共分为20个等级。文章通过具体案例解释了不同运算符的使用场景及计算顺序,帮助读者深入理解JavaScript运算符的执行逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript运算符优先级

运算符优先级

运算符从上到下共分为20个等级,由上到下优先级逐渐降低,见下文。

  • 20 () 括号优先级最高 多个括号无关联,一个一个算

  • 19 变量或函数的属性调用和访问 优先级仅次于括号 多个出现从左到右计算

    ​ 例如: a.x的. a[b]的[] new foo(有参数) 函数调用 fn()

  • 18 new (无参数)

  • 17 后置递增和后置递减 a++ a-- 优先级高于前置 多个出现时无关联,一个一个算

  • 16 一元运算符 优先级也比较高 从右向左计算,先算右边变量再算左边运算符

    ​ 例如: +a -a (一元加减) 逻辑非! 按位非~ ++a --a(前置加减) typeof void delete await

  • 15 幂运算 …**… 从右到左计算

  • 14 乘除取模 * / % 优先级高于普通的运算符 从左到右计算

  • 13 加法减法 + - 从左到右计算

  • 12 位运算符 例如 按位左移 …<<… 按为右移 …>>… 无符号右移…>>>…

  • 11 比较运算符 比较运算符优先级仅高于判断的运算符 从左到右计算

    ​ 例如: < > <= >= in instanceof

  • 10 判断运算符 注意是两等和三等而不是等于号 从左到右计算

    ​ 例如: == != === !==

  • 9 按为运算符 按为与 & 从左到右计算

  • 8 按为运算符 按为异或 ^ 从左到右计算

  • 7 按为运算符 按为或 | 从左到右计算

  • 6 逻辑与 && **优先级高于逻辑或 ** 从左到右计算

  • 5 逻辑或 || 高于三目运算 从左到右计算

  • 4 条件运算符 … ? … :… 优先级仅高于赋值运算符 从右向左计算

  • 3 各种赋值运算符 赋值运算符最低,仅高于逗号 从右向左计算

    ​ 例如: = += -= *= /= %= &= |= ^=

  • 2 yield 从右向左计算

  • 1 展开运算符 … 很低 无关联

  • 0 逗号运算符…,… 运算优先级最低,没有之一 从左到右计算


常用运算符优先级

() >> ( . [ ] ) > > (后置递增递减a++,a-- ) >> (一元加减±,非!,前置±) >> (*/%) >> (±运算符) >>

(> < >= <= in instanceof) >> (== === != !==) >> (&&) >> (||) >> (三目) >> (赋值运算符) >> (逗号运算符,)

案例

  • 加减运算符的优先级要高于赋值符号 例如 + 要高于 +=

      <script>
          var a = 3
          console.log(a += 2 + "px")    //  32px     这里先算 2  +  "px" , 再算 3 += "2px"  得到32px
      </script>>
    
  • . [ ]的运算符非常高,计算时候要注意

      <script>
        var a = {n:1};
        var b = a;               
        a.x = a ={m:2};   
        //  这里先算 . 运算符,.后没有直接结果先挂起来,再算a.x后面的
        //  后面的两个赋值号,从右向左计算,先将{m:2} 赋值给一个变量a   
        //  最后计算完毕在将{m:2} 赋值给 a.x     
        console.log(a);    //   {m: 2}
        console.log(b)     //   {n: 1, x: {m:2}}
      </script>
    
  • 同样是加号,后置++优先级 > 一元加减运算符(等同于前置++优先级) > 加减法(+ -),先算后置加加,再算前置加加或者一元运算符,最后算加减法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值