【发布时间】:2013-01-30 00:46:13
【问题描述】:
考虑这种情况:
(true & true & false & false & true) == true //returns: false
如您所见,按位与行为与逻辑与完全一样:
(true && true && false && false && true) == true //returns: false
我想知道为什么当按位运算与逻辑运算相同时,我应该使用逻辑运算。
注意:请不要因为性能问题而回答,因为它在 Mozilla Firefox 中要快得多,请参阅这个 jsPerf:http://jsperf.com/bitwise-logical-and
【问题讨论】:
-
在第二个例子中,我认为如果第一个值为 false,则不会评估其余值,因为该语句不能为 true。
-
您的性能测试有缺陷。您仅使用
true和false值进行测试。当你用真正的函数替换时,性能问题就会出现。 -
如果有记忆,
&会继续评估所有选项,而&&会在第一个false处停止,因此不会评估其他条件。 -
如果您将
&替换为+或*,您的第一个sn-p 仍然有效。这并不意味着+或*总是 与布尔值&&一样。 -
对一位的按位运算有点太多了;)
标签: javascript operators bitwise-operators logical-operators