Javascript 中的 && 运算符

IT技术 javascript operators
2021-03-12 09:03:00

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

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

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

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

4个回答

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

JavaScript 中没有类。引导加载程序将是一个函数或对象
2021-04-20 09:03:00
It does not "make sure" Bootloader is either a function or an object, it just tests if the window object has a Bootloader property whose value is truthy. If so, it then assumes that it is callable.
2021-04-30 09:03:00
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