Logical operator Javascript && [duplicate]

问题描述 投票:-2回答:1

运行此代码时,首先显示1,然后未定义。但是我还是听不懂。

alert(alert(1) && alert(2));

这里有一些解释:

警报调用返回未定义(它仅显示一条消息,因此没有有意义的返回)。

因此,&&评估左操作数(输出1),并立即停止,因为undefined是一个伪造的值。然后&&寻找一个伪造的值并返回它,所以就完成了。

javascript alert operator-keyword
1个回答
1
投票

警报不返回任何内容

因此alert(1)运行,因为警报不会返回未定义的任何内容。结果,您得到了alert(undefined && alert(2))alert(2)将不会执行,因为左部分需要真实才能执行。未定义是错误的。计算结果为alert(undefined)

因此,第一个警报的警报为1,外部警报的警报为undefined,并且alert(2)从不执行。

以一种不太混乱的方式写出的代码

var action = alert(1) && alert(2) // only runs alert(1)
console.log(action) // shows variable is undefined
alert(action) // alerts undefined
© www.soinside.com 2019 - 2024. All rights reserved.