JavaScript中的&&运算符

17

在查看一些JavaScript代码时,我发现了这段代码:

<script>window.Bootloader && Bootloader.done(["pQ27\/"]);</script>

我不明白的是 && 在这里的作用是什么,这段代码来自Facebook,显然已经被压缩或混淆了,但它仍然能够做相同的事情。

简而言之:&& 操作符在这里的作用是什么?

4个回答

22

&& 确保在调用 done 方法之前 Bootloader 函数/对象已经存在。该代码利用布尔短路的特性,确保第一个表达式为真时才执行第二个表达式。更深入的解释请参见 短路求值维基百科 条目。


1
JavaScript 中没有类。引导程序可以是一个函数或对象。 - calebds
9
它并不会“确保” Bootloader 是一个函数或对象,它只是测试 window 对象是否具有 Bootloader 属性,其值为真。如果是这样,它就认为它是可调用的。 - RobG

19
window.Bootloader && Bootloader.done(["pQ27\/"]);

它等同于:

if(window.Bootloader) {
  Bootloader.done(["pQ27\/"]);
}

11

&& 是一个AND运算符,与其他地方一样。它真的没有什么特别的。

大多数语言(包括 JavaScript)在第一个操作数为 false 的情况下将停止计算AND运算符。

在这种情况下,如果 window.Bootloader 不存在,它将是未定义的,这将被视为 false,因此 JavaScript 将跳过第二部分。

如果它是 true,则继续调用 Bootloader.done(...)

把它看作是 if(window.Bootloader) { Bootloader.done(...) }的快捷方式。


3
也,&& 操作符返回第一个遇到的以下任何一个值: null、undefined、0、false、NaN、""。
例如: if
var1 = 33
var2 = 0 
var3 = 45

var1 && var2 && var3
returns 0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接