felix-cao / Blog

A little progress a day makes you a big success!
31 stars 4 forks source link

JavaScript 中的逻辑运算符和短路表达式 #60

Open felix-cao opened 6 years ago

felix-cao commented 6 years ago

逻辑运算 Logical operators,又称“布尔运算” 短路计算 Short-circuit evaluation

短路表达式,JS逻辑运算有一个短路计算原则, MDN描述如下:由于逻辑表达式的运算的顺序是从左到右的,利用其规则进行“短路”运算。

JS逻辑运算符的说明:

运算法 示例 说明
逻辑与(&&) expr1 && expr2 如果expr1 能转换成false则返回expr1,否则返回expr2
因此, 在Boolean环境中使用时, 两个操作结果都为true时返回true,否则返回false.
逻辑或(ll) expr1 ll expr2 如果expr1能转换成true则返回expr1,否则返回expr2.
因此,在boolean环境(在if的条件判断中)中使用时, 二者操作结果中只要有一个为true,返回true;
二者操作结果都为false时返回false.
逻辑非(!) !expr 如果单个表达式能转换为true的话返回false,否则返回true.

能够转换为false的表达式有:""(空字符串), 0和NaN, false, null, undefined, 参考 8 个falsy值

短路计算 Short-circuit evaluation

由于逻辑表达式的运算的顺序是从左到右,也可以用以下规则进行"短路"计算:

理解为逻辑中断。 是否执行第二个语句(操作数)取决于第一个操作数的结果

案例