一尘不染

什么是“ x && foo()”?

javascript

我看到其他地方说:

x && foo();

等于

if(x){
    foo();
}

我测试了一下,他们确实做了同样的事情。但为什么?到底是x && foo()什么?


阅读 285

收藏
2020-04-25

共1个答案

一尘不染

AND和OR运算符都可以捷径。

因此,&&仅在第一个表达式为true时才尝试第二个表达式(更确切地说,是类似事实的表达式)。第二个操作确实起作用(无论其内容如何foo())的事实无关紧要,因为除非第一个表达式的计算结果为真,否则它不会执行。如果是事实,则将执行它以尝试第二次测试。

相反,如果||语句中的第一个表达式为true,则第二个表达式不会被触动。这样做是因为整个语句已经可以求值,无论第二个表达式的结果如何,该语句都会为true,因此它将被忽略并保持未执行状态。

当然,使用此类快捷方式时要注意的情况是使用运算符的情况,其中定义的变量仍会计算为伪造的值(例如0)和真实的值(例如'zero')。

2020-04-25