在查看一些代码(javascript)时,我发现了这段代码:
<script>window.Bootloader && Bootloader.done(["pQ27\/"]);</script>
我不明白的是那里在&&
做什么,代码来自 Facebook,显然被缩小和/或混淆,但它仍然做同样的事情。
tl;dr:&&
操作员在这里做什么?
在查看一些代码(javascript)时,我发现了这段代码:
<script>window.Bootloader && Bootloader.done(["pQ27\/"]);</script>
我不明白的是那里在&&
做什么,代码来自 Facebook,显然被缩小和/或混淆,但它仍然做同样的事情。
tl;dr:&&
操作员在这里做什么?
&&
Bootloader
在调用done
方法之前确保函数/对象存在。该代码利用布尔短路来确保第一个表达式在执行第二个之前评估为真。有关更深入的解释,请参阅短路评估维基百科条目。
window.Bootloader && Bootloader.done(["pQ27\/"]);
it is equivalent to:
if(window.Bootloader) {
Bootloader.done(["pQ27\/"]);
}
&&
is an AND
operator, just like most everywhere else. There is really nothing fancy about it.
Most languages, JavaScript included, will stop evaluating an AND
operator if the first operand is false.
In this case, if window.Bootloader
does not exist, it will be undef, which evaluates to false, so JavaScript will skip the second part.
If it is true, it continues and calls Bootloader.done(...)
.
Think of it as a shortcut for if(window.Bootloader) { Bootloader.done(...) }
also && operator returns the first encountered value of this kind: null, undefined, 0, false, NaN, ""
ex: if
var1 = 33
var2 = 0
var3 = 45
var1 && var2 && var3
returns 0