为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

明月笑刀无情 2023-02-17 16:09:39
我在 Chrome 的控制台上测试了一些东西,然后我运行了那段代码:alert() | window.confirm();  alert() || window.confirm();我的问题是在不使用分号的情况下在一行中同时运行警报和确认方法。事实证明,两者 | 和|| 有效,我无法想象它为什么有效,首先是因为|| 表示一个 OR 运算符,它应该运行其中一个,而不是同时运行,其次| 我不知道那是什么。有人可以解释发生了什么,还有什么可以代替; ?
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

分号表示语句的结束。

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

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

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

alert() || window.confirm()

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

|您可以使用、||或 等运算符将多个表达式组合在一起=。您还可以通过将每个表达式作为单独的语句来评估多个表达式,例如

alert();
window.confirm();

两者都会导致出现警告框和确认对话框。


查看完整回答
反对 回复 2023-02-17
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

alert()返回undefined,这是错误的。因此,window.confirm()仍然会运行,以你的例子为例||

至于单个管道字符|,这是按位或,您可以在此处阅读: https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise


查看完整回答
反对 回复 2023-02-17
?
当年话下

TA贡献1890条经验 获得超9个赞

The||是一个运算符,例如+or /;它计算了一些东西。在 的情况下||,它计算一个或另一个值是否为真。

通常,您会在声明之类的地方使用它ifif (i===0 || j===0) {...}但不限于此;例如,您可以将结果放在一个变量中,然后在if稍后的语句中使用它:have_zero = i===0 || j===0; ...; if (have_zero) {...}

||(and ) 运算符&&确实有一件特殊的事情:如果左侧确定答案,则它们不会费心计算右侧(称为“短路评估”)。

在这里,你正在计算alert() || window.confirm(),所以它调用alert();正如其他人所指出的,这返回undefinedwhich 并不能确定 的答案||,因此 Javascript 然后调用window.confirm(). 然后答案被丢弃,因为您没有将它放在变量中或以其他方式使用它,但这没关系 - 您想要调用这些方法,您对答案不感兴趣。


查看完整回答
反对 回复 2023-02-17
  • 3 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信