在查看一些JavaScript代码时,我发现了这段代码:
<script>window.Bootloader && Bootloader.done(["pQ27\/"]);</script>
我不明白的是 &&
在这里的作用是什么,这段代码来自Facebook,显然已经被压缩或混淆了,但它仍然能够做相同的事情。
简而言之:&&
操作符在这里的作用是什么?
在查看一些JavaScript代码时,我发现了这段代码:
<script>window.Bootloader && Bootloader.done(["pQ27\/"]);</script>
我不明白的是 &&
在这里的作用是什么,这段代码来自Facebook,显然已经被压缩或混淆了,但它仍然能够做相同的事情。
简而言之:&&
操作符在这里的作用是什么?
&&
确保在调用 done
方法之前 Bootloader
函数/对象已经存在。该代码利用布尔短路的特性,确保第一个表达式为真时才执行第二个表达式。更深入的解释请参见 短路求值维基百科 条目。
window.Bootloader && Bootloader.done(["pQ27\/"]);
它等同于:
if(window.Bootloader) {
Bootloader.done(["pQ27\/"]);
}
&&
是一个AND
运算符,与其他地方一样。它真的没有什么特别的。
大多数语言(包括 JavaScript)在第一个操作数为 false 的情况下将停止计算AND
运算符。
在这种情况下,如果 window.Bootloader
不存在,它将是未定义的,这将被视为 false,因此 JavaScript 将跳过第二部分。
如果它是 true,则继续调用 Bootloader.done(...)
。
把它看作是 if(window.Bootloader) { Bootloader.done(...) }
的快捷方式。
var1 = 33
var2 = 0
var3 = 45
var1 && var2 && var3
returns 0