有趣的运算符
|| (逻辑或运算符)
逻辑或运算符会从左往右的检查运算符两边的值,非布尔值会被转化成真值与假值(null,undefined,NaN,0,’’,``,""),再进行运算。
如果运算符两边的值均为 false,那么返回 右边的值 。
false || 0 // return 0
false || undefined // return undefined
undefined || false // return false
如果运算符左边的值为true,那么返回该值,并终止运算。
1 || 0 // return 1
0 || {} // return {}
undefined || true // return true
如果运算符两边的值均为true,那么会返回左边的值,并终止运算,这也叫做短路计算。
1 || 0 // return 1
相当于短路计算是由真值触发的。
&& (逻辑与运算符)
与逻辑或相同的是,它也会进行真值假值的转化,并且运算也是从左到右的。
只不过,它的短路计算是由假值触发的。
如果运算符两边的值均为 false,那么返回 左边的值 。(因为短路计算,遇到假值不会计算右边的表达式)
false && 0 // return false
0 && undefined // return 0
undefined && false // return undefined
如果运算符左边的值为true,那么继续计算,并返回运算符右边的值。
1 && 0 // return 0
true && {} // return {}
12 && true // return true
如果运算符两边的值均为true,那么会返回右边的值。
1 && true // return true