Javascript中的&&运算符

Zar*_*Zar 17 javascript operators

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

<script>window.Bootloader && Bootloader.done(["pQ27\/"]);</script>
Run Code Online (Sandbox Code Playgroud)

我不明白的&&是在那里做的是什么,代码来自Facebook,显然是缩小和/或混淆,但它仍然做同样的事情.

tl;博士:&&运营商在这做什么?

Sam*_*lan 23

&&Bootloader在调用done方法之前确保函数/对象存在.代码利用布尔短路来确保第一个表达式在执行第二个表达式之前求值为true.请参阅短路评估维基百科条目以获得更深入的解释.

  • 它没有"确定"*Bootloader*是一个函数或一个对象,它只是测试*window*对象是否具有*Bootloader*属性,其值是真实的.如果是这样,那么它假定它是可调用的. (7认同)

ijs*_*jse 18

window.Bootloader && Bootloader.done(["pQ27\/"]);
Run Code Online (Sandbox Code Playgroud)

它相当于:

if(window.Bootloader) {
  Bootloader.done(["pQ27\/"]);
}
Run Code Online (Sandbox Code Playgroud)


Jef*_*f B 9

&&是一个AND运营商,就像大多数其他地方一样.真的没什么好看的.

AND如果第一个操作数为false ,大多数语言(包括JavaScript)将停止评估运算符.

在这种情况下,如果window.Bootloader不存在,它将是undef,其评估为false,因此JavaScript将跳过第二部分.

如果是真的,它会继续并调用Bootloader.done(...).

把它想象成一条捷径 if(window.Bootloader) { Bootloader.done(...) }