回到课程

一个关于 "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' );