相关疑难解决方法(0)

当运算符优先级表明不应该进行短路评估时,为什么这样做?

JavaScriptJava中,equals运算符(=====)的优先级高于OR运算符(||).然而,两种语言(JS,Java)都支持if语句中的短路:

当我们有if(true || anything()),anything()没有评估.

您还可以使用以下表达式:true || foo == getValue())- 例如,在输出语句中,例如console.log(...);,或在赋值中.

现在,根据运算符优先级,不应该发生短路,就优先级而言==== ==> ||.(换句话说,比较应该首先发生,getValue()应该调用,因为等式检查具有比OR比较更高的优先级.)但它确实如此.getValue()没有被调用(可以通过将输出语句放入其正文中来轻松检查).

为什么(当运算符优先说它不应该时,短路工作)?
还是我困惑的事情?

javascript java operator-precedence short-circuiting

6
推荐指数
1
解决办法
435
查看次数