我很想知道 Javascript 中的条件语句。我有两个例子如下:
var myObj = {};
console.log(myObj.pro != null && myObj.pro.val != null ? 0 : 1);
console.log(myObj.pro.val != null && myObj.pro != null ? 0 : 1);
第二行将打印一个值,但第三行将引发异常。条件是从左到右检查的吗?当我们在同一行中有很多条件运算符如 OR、NOT、() 和 AND 时,它是如何检查的。首先检查哪一个? 如果我误解了,请纠正我。
更新:我添加了更复杂的示例:
var !(!A || B && C && D) ? 0 : 1;
最佳答案
对于第二行 console.log(myObj.pro != null && myObj.pro.val != null ? 0 : 1);
, myObj.pro
计算结果为 undefined
,然后将其与 null
进行比较并返回 false
。我们知道,在 AND 比较中,当左侧的计算结果为 false
时,Javascript 会忽略 AND 的右侧。这种合理的行为可防止解释器遇到异常绑定(bind)的右侧代码,该代码本质上是 undefined.val
第三行继续执行并评估 undefined.val
,它抛出异常并停止解释。
如果您有兴趣了解优先级,请查看 this MSDN table
关于Javascript - 条件语句的检查顺序是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53758724/