为什么| 和 || 类似于 Javascript 中的分号?

tes*_*_22 5 javascript

我在 Chrome 上的控制台上测试了一些东西,然后我运行了这段代码:

alert() | window.confirm();
alert() || window.confirm();
Run Code Online (Sandbox Code Playgroud)

我的问题是在一行中同时运行 alert 和 confirm 方法而不使用分号。事实证明,两者 | 和 || 有效,我无法想象它为什么有效,首先是因为|| 表示一个 OR 运算符,它应该运行其中一个,而不是两者,其次| 我不知道它是什么。有人可以解释发生了什么,还有什么应该起作用而不是; ?

Cer*_*nce 3

分号表示语句的结束。

如果您还不知道,表达式就是计算结果的值。例如,5'foobar'myFn()都是表达式,因为它们计算结果为值。

语句可以由多个表达式组成。例如,const result = fn('foo')'foo'表达式传递给函数调用,函数调用返回一个值并赋给result

在您的代码中,两行都由两个表达式组成,但每一行恰好是一个语句。有了这一行:

alert() || window.confirm()
Run Code Online (Sandbox Code Playgroud)

会先评价alert。由于alert返回undefined||因此该运算符会计算右侧的表达式,即window.confirm()

您可以使用|||或 等运算符将多个表达式放在同一个表达式上=。您还可以通过将每个表达式作为单独的语句来计算多个表达式,例如

alert();
window.confirm();
Run Code Online (Sandbox Code Playgroud)

两者都会出现一个警告框和一个确认对话框。