一个关于 "if" 的问题
重要程度: 5
下面哪一个 alert
将会被执行?
if(...)
语句内表达式的结果是什么?
if (-1 || 0) alert( 'first' );
if (-1 && 0) alert( 'second' );
if (null || -1 && 1) alert( 'third' );
答案:第一个和第三个将会被执行。
详解:
// 执行。
// -1 || 0 的结果为 -1,真值
if (-1 || 0) alert( 'first' );
// 不执行。
// -1 && 0 = 0,假值
if (-1 && 0) alert( 'second' );
// 执行
// && 运算的优先级比 || 高
// 所以 -1 && 1 先执行,给出如下运算链:
// null || -1 && 1 -> null || 1 -> 1
if (null || -1 && 1) alert( 'third' );