在JavaScript和Java中,equals运算符(==或===)的优先级高于OR运算符(||).然而,两种语言(JS,Java)都支持if语句中的短路:
当我们有if(true || anything()),anything()没有评估.
您还可以使用以下表达式:true || foo == getValue())- 例如,在输出语句中,例如console.log(...);,或在赋值中.
现在,根据运算符优先级,不应该发生短路,就优先级而言==== ==> ||.(换句话说,比较应该首先发生,getValue()应该调用,因为等式检查具有比OR比较更高的优先级.)但它确实如此.getValue()没有被调用(可以通过将输出语句放入其正文中来轻松检查).
为什么(当运算符优先说它不应该时,短路工作)?
还是我困惑的事情?