有人能解释一下为什么 JavaScript 中的逻辑运算符(如 || 和 &&)要使用操作符优先级吗?在如下运算中,它是什么意思?
true || false && false JavaScript 中 && 操作符比 || 操作符具有更高的优先级,因此先计算 false && false。根据我所知,JavaScript 引擎不会计算 false && false,因为在 || 操作符之前有一个 true 字面量,当 || 操作符之前的值为 true 时,|| 操作符后面的值就不会被计算,这称为“逻辑运算符的短路”;在 JavaScript 中,另一个例子将是:
true || alert()
即使函数调用的优先级高于 || 操作符,该函数调用也永远不会发生;另一个例子是:
true || x = 7
如果在 JavaScript 中逻辑运算符的短路确定为真,则上述代码不应产生错误,因为不会计算 x = 7,因为在 || 操作符之前有一个 true 字面量。
true || false && false JavaScript 中 && 操作符比 || 操作符具有更高的优先级,因此先计算 false && false。根据我所知,JavaScript 引擎不会计算 false && false,因为在 || 操作符之前有一个 true 字面量,当 || 操作符之前的值为 true 时,|| 操作符后面的值就不会被计算,这称为“逻辑运算符的短路”;在 JavaScript 中,另一个例子将是:
true || alert()
即使函数调用的优先级高于 || 操作符,该函数调用也永远不会发生;另一个例子是:
true || x = 7
如果在 JavaScript 中逻辑运算符的短路确定为真,则上述代码不应产生错误,因为不会计算 x = 7,因为在 || 操作符之前有一个 true 字面量。
true || false && false
它等同于true || (false && false)
而不是(true || false) && false
。你可以将优先级视为表达式生成的树如何构建,然后根据求值顺序对该树进行评估。 - t.niesex = 7
的赋值表达式,哪个操作数会先被评估呢? - user13104441