-2

我还处于非常基础的 JS 阶段,遇到了我最近卡住的一个练习,下面是代码:

alert(alert(0) || alert(2));

结果返回为 0 ,然后是 2 和未定义

我了解 OR 的工作原理是首先寻找真实值,如果没有找到则返回最后一个值,但是在上面的代码中,它不应该在 2 之后停止评估吗?为什么还有未定义的回报?这是虚假的价值。

4

1 回答 1

2

结果返回为 0 ,然后是 2 和未定义

听起来您错误地假设显示的值也是从alert()函数返回的。事实并非如此。alert()总是返回undefined。第一个警报显示 0,但0不返回。而是alert()函数返回值undefined。由于这是“falsey”,alert(2)因此也调用它显示一个2然后返回undefined这是||运算符的最终结果。然后这个“未定义”由最终警报显示。

于 2021-02-09T06:36:56.417 回答