谁能解释一下为什么 "operator precedence" 适用于 javaScript 中的“||”、“&&”等逻辑运算符
Can someone explain me why "operator precedence" applies to logical operators like "||", "&&" in javaScript
谁能解释一下为什么运算符优先级适用于 JavaScript 中的 ||
和 &&
等逻辑运算符?这在像这样的操作中意味着什么:
真||假&&假
首先计算 false && false
,因为 &&
运算符的优先级高于 JavaScript 中的 ||
运算符。据我所知,false && false
未被 JavaScript 引擎评估,因为在 || 之前运算符有一个 true
文字,当 ||
运算符之前的内容是 true
时, ||
运算符之后的内容将不会被评估,这在中称为 "short-circuiting of logical operators" JavaScript 另一个例子是:
真||警报()
即使函数调用的优先级高于 ||
运算符,函数调用也不会发生,另一个例子是
真|| x = 7
如果在 JavaScript 中逻辑运算符短路是真的,那么上面的代码不能给出错误,因为 x = 7 没有被评估,因为之前||
运算符有一个 true
文字。
运算符优先级只决定分组,而不是实际的评估顺序:
true || false && false
变为 true || (false && false)
但仍然从左到右求值。
true || alert()
被评估为 true || (alert())
而不是 (true || alert)()
true || x = 7
被评估为 (true || x) = 7
并导致错误,而不是 true || (x = 7)
谁能解释一下为什么运算符优先级适用于 JavaScript 中的 ||
和 &&
等逻辑运算符?这在像这样的操作中意味着什么:
真||假&&假
首先计算 false && false
,因为 &&
运算符的优先级高于 JavaScript 中的 ||
运算符。据我所知,false && false
未被 JavaScript 引擎评估,因为在 || 之前运算符有一个 true
文字,当 ||
运算符之前的内容是 true
时, ||
运算符之后的内容将不会被评估,这在中称为 "short-circuiting of logical operators" JavaScript 另一个例子是:
真||警报()
即使函数调用的优先级高于 ||
运算符,函数调用也不会发生,另一个例子是
真|| x = 7
如果在 JavaScript 中逻辑运算符短路是真的,那么上面的代码不能给出错误,因为 x = 7 没有被评估,因为之前||
运算符有一个 true
文字。
运算符优先级只决定分组,而不是实际的评估顺序:
true || false && false
变为true || (false && false)
但仍然从左到右求值。true || alert()
被评估为true || (alert())
而不是(true || alert)()
true || x = 7
被评估为(true || x) = 7
并导致错误,而不是true || (x = 7)