当我运行此代码时,首先显示 1,然后未定义。但我还是无法理解。
alert(alert(1) && alert(2));
这里有一些解释:
对警报的调用返回未定义(它只显示一条消息,因此没有有意义的返回(。
因此,&&
计算左操作数(输出 1(,并立即停止,因为 undefined 是一个虚假值。&&
查找一个虚假值并返回它,所以它就完成了。
警报不返回任何内容
所以alert(1)
运行,因为警报不返回任何未定义的内容。因此,您alert(undefined && alert(2))
.alert(2)
不会执行,因为左侧部分需要真实才能执行。未定义是假的。这计算结果为alert(undefined)
.
因此,对于第一个警报,您得到的警报为 1,而外部警报未定义,并且警报 (2( 永远不会执行。
以不那么混乱的方式编写的代码
var action = alert(1) && alert(2) // only runs alert(1)
console.log(action) // shows variable is undefined
alert(action) // alerts undefined