这个JavaScript程序是如何工作的

How does this JavaScript program works?

本文关键字:工作 何工作 JavaScript 程序 这个      更新时间:2023-09-26

抱歉,如果这个问题不符合网站的水平,我无法在其他任何地方找到帮助。我刚刚开始学习JavaScript,但我被困在我的教科书中给出的示例代码上

var a = null;
function b() {return "B";}
(a || b)();
! "B"

对代码没有足够的解释,我无法弄清楚它是如何工作的,任何人都可以帮助我吗

谢谢

阿卡什

我假设你困惑的根源来自第三行和第四行。

让我们从第三行开始:(a || b)(); .

首先计算a,如果不是nullundefined则此表达式的结果是a(),否则结果是b()

在您的代码片段中,a为 null,因此表达式的计算结果为 b() 仅返回 "B"

OR ||运算符逐个查看其操作数,直到找到一个 true 值并返回它,如果所有值都是的,则返回最后一个操作数。

有关值和值的更多信息,请查看此处

现在这一行! "B",JavaScript 中除了空字符串""之外的所有字符串都被求值true,所以前面表达式的结果是! true所以是false

关键在于||运算符的工作方式。 这一行:

(a || b)();

相当于这个:

var f;
if (a)
  f = a;
else
  f = b;
f();

||运算符通过首先评估左侧(在本例中为 a )来工作。 然后,它会检查该值是否为"真实",这意味着它不是null0、空字符串和其他一些东西。在这种情况下,它显然是null,所以它不是"真实的"。

因此,||运算符继续计算右侧(在本例中为 b ),并将该值作为||运算的结果。什么是"b"? 这是一个在调用时返回字符串"B"的小函数。

因此,在||操作完成后,将留下对该函数的引用,后续的()函数调用运算符会导致调用该函数。

有两个

变量,anull变量,b变量是始终返回字符串"B"的函数。 (a || b)()展示了一些逻辑 && 和 ||在 JavaScript 中工作 - 计算短路,最后一个评估值是整个表达式的值。由于a null是伪造的,因此(a || b)()计算结果为b(),因此您可以获得"B"打印。

通常:

(a || b);  //a if a is truthy, otherwise b
(a && b);  //a if a is falsy, otherwise b

Falsy值是nullundefined0,空字符串""NaN,当然还有false。其他一切都是真实的。