js中的短路运算

今天通过学习@wenrunchang123及@_雨落1226的博客,了解到一个概念,叫做短路运算。

首先,需要了解,在逻辑运算中,对应boolean值为false的情况包括0,"",null,undefined,NaN,false;其余值都对应true。

&&运算

a && b :   如果a表达式,不是布尔类型,先隐式转换为布尔值,如果为true,无论b为true或者false,都返回b的值;如果为false,则返回a的值

console.log(5-2 && 9);  [Web浏览器] "9"

console.log(false && 9);  [Web浏览器] "false"


||运算


a || b :  通过隐式转换得到a的boolean 值,如果为true,则无论b的值为false或者true,都返回a的值;如果a的boolean值为false,则返回b的值

console.log(8-1 || 3); [Web浏览器] "7"

console.log(8-NaN || 3); [Web浏览器] "3"


&& 与 || 的优先级比较

结论:&&运算优先级高于||运算

console.log(3 && 9  || 3 &&7);    [Web浏览器] "9"   先计算两边的&&运算,再计算中间的||运算;

()运算可以改变||运算的优先级

console.log(3 && (9  || 3) &&7);    [Web浏览器] "7"  ()运算改变了||运算的优先级,先计算||,再计算&&

你可能感兴趣的:(js中的短路运算)