或运算和 alerts 的结果是什么?
重要程度: 3
下面的代码将会输出什么?
alert( alert(1) || 2 || alert(3) );
答案:首先是 1
,然后是 2
。
alert( alert(1) || 2 || alert(3) );
对 alert
的调用没有返回值。或者说返回的是 undefined
。
- 第一个或运算
||
对它的左值alert(1)
进行了计算。这就显示了第一条信息1
。 - 函数
alert
返回了undefined
,所以或运算继续检查第二个操作数以寻找真值。 - 第二个操作数
2
是真值,所以执行就中断了。2
被返回,并且被外层的 alert 显示。
这里不会显示 3
,因为运算没有抵达 alert(3)
。