JavaScript中“===”与“||”的运算符优先级问题

吏小加
  • 16

在JavaScript的条件判断语句中

if ( type===A || B ) { Do Something }

是否等同于

if ( type===A || type===B ) { Do Something }

我自己测试了一下这两行代码,输出的结果居然完全相同

但是运算符优先级表里面"==="比较运算应该在"||"集合运算之前

望大神能用更清晰的例子证明该条件判断的顺序

回复
阅读 1.1k
3 个回答
  1. 全等运算符优先级高,所以第一个表达式可以写为:(type === A) || B
  2. 根据短路原则,当 type !== A 时,表达式求值就是 B
  3. 你测试的结果相同,那是因为,当 type!==A,第一个判断就是 if (B), 第二个表达式就是 if (type === B),当 type === BBbooleantrue,那么就是一样的结果
  1. 运算符优先级
  2. type === A 如果成立,会直接短路,后面是什么都无所谓
  3. B 如果不为 type === B 那么自然也能通过
  4. 运算符就是很简单的顺序,不要怀疑,检查其它条件

不等同,js没这样的语法,if(type === A || B) ==> if((type === A) || (B))
type===Afalse的情况下,js会把B转换成布尔类型进行判断

运算符优先级看这个:https://developer.mozilla.org...

没什么需要证明的,这种语言层面的东西,记住就行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏