运算符优先级对于 && 重要吗? 和 == 在 javascript 中?
更具体地说,语句中是否存在一组值(a、b 和 c),其中运算符优先级很重要:
var value = (a && b == c);
(NaN 除外)。
More specifically, is there a set of values ( a, b and c) for which the operator precedence matters in the statement:
var value = (a && b == c);
(with the exception of NaN).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是
由于
==
的优先级高于&&
,因此第一个被解析为false && (true == false)
,相当于false && false
,因此计算结果为false
。 第二个相当于false == false
,即true
Yes
Since
==
has higher precedence than&&
, the first is parsed asfalse && (true == false)
, which is equivalent tofalse && false
, and thus evaluates tofalse
. The second is equivalent tofalse == false
, which istrue
该语言经过解析后,您的语句相当于
(a && (b == c))
。 相等运算符将始终在&&
、||
和其他逻辑运算符之前运行。 您可以在此处找到详细信息。The language is parsed such that your statement is the equivalent of
(a && (b == c))
. The equality operator will always run before&&
,||
and other logical operators. You can find the nitty-gritty details here.是的。
==
比&&
绑定更紧密,因此您所绑定的内容请参阅 这里。 所以
a==0
、b==1
和c==0
为 false,而(a&&b) ==c
是正确的。(修正了拼写错误。该死。)
Yup.
==
binds more tightly than&&
, so what you have binds asSee here. So
a==0
,b==1
andc==0
is false, while(a&&b)==c
is true.(Fixed typo. Dammit.)