&&;Javascript中的运算符

&&;Javascript中的运算符,javascript,operators,Javascript,Operators,在浏览一些代码(javascript)时,我发现了以下代码: <script>window.Bootloader && Bootloader.done(["pQ27\/"]);</script> window.Bootloader&&Bootloader.done([“pQ27\/”]); 我不明白的是&&在那里做什么,代码来自Facebook,显然被缩小和/或模糊化了,但它仍然做同样的事情 tl;dr:&&操作员在这里做什么 &&在调用done方法之

在浏览一些代码(javascript)时,我发现了以下代码:

<script>window.Bootloader && Bootloader.done(["pQ27\/"]);</script>
window.Bootloader&&Bootloader.done([“pQ27\/”]);
我不明白的是
&&
在那里做什么,代码来自Facebook,显然被缩小和/或模糊化了,但它仍然做同样的事情


tl;dr:
&&
操作员在这里做什么

&&
在调用
done
方法之前,确保
Bootloader
函数/对象存在。代码利用布尔短路来确保第一个表达式在执行第二个表达式之前计算为true。有关更深入的说明,请参见条目

window.Bootloader && Bootloader.done(["pQ27\/"]);
这相当于:

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

&&
是一个
操作符,就像其他地方的大多数操作符一样。这真的没什么了不起的

如果第一个操作数为false,大多数语言(包括JavaScript)都会停止计算
运算符

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

如果为true,它将继续并调用
Bootloader.done(…)


可以将其视为
if(window.Bootloader){Bootloader.done(…)}
的快捷方式,并且&&operator返回第一个遇到的此类值: null,未定义,0,false,NaN,“”

例: 如果


JavaScript中没有类。引导加载器将是函数或对象它不“确保”引导加载器是函数或对象,它只是测试窗口对象是否具有值为truthy的引导加载器属性。如果是这样,则假定它是可调用的。
var1 = 33
var2 = 0 
var3 = 45

var1 && var2 && var3
returns 0