如何javascript || (或)运营商的工作

时间:2013-03-16 03:52:59

标签: javascript operators conditional-statements or-operator

在以下JavaScript语句中:

var a = true;
a = a || b;

a变量是否会重新分配到它自己的值?

3 个答案:

答案 0 :(得分:3)

是的,它将分配给a。这种事情甚至可能不会用编译语言进行优化。

然而,它不会浪费时间评估b,因为它已经知道结果。运行a = a || b时会发生类似这样的事情:

if a
    a = a
else
    a = b

修改

要跟进icktoofay所说的“它不会对性能产生重大影响。”,它只是设置一个(布尔)变量,这是可能发生的最简单的操作之一。即使你正在分配像函数或数组这样更重要的东西,因为它将分配给项目的引用,而不是再次创建它,它将没什么区别。

通过jsPerf link进行设置,以下是无所事事与分配给自我(@bfavaretto)的效果比较。

答案 1 :(得分:0)

aa为真时,

b将为真。所以是的,除非你在那些可能影响a的值的行之间插入更多代码,否则较低的语句将始终将a设置为true。

答案 2 :(得分:0)

是的 - 它不会被优化掉,因为JavaScript没有优化。虽然底层的解析器实现可以想象地进行优化,但我非常怀疑它会在这种情况下,并且它将非常具体到平台实现。