1. 逻辑运算符里的短路
-
短路:只存在于&&和||中,当满足一定条件会让右边代码不执行
符号 | 短路条件 |
---|---|
&& | 左边为false就短路 |
|| | 左边为true就短路 |
console.log(11 && 22) // 输出结果是22 console.log(11 || 22) // 输出结果是11 console.log(0 && 22) // 输出结果是0 console.log(false || 22) // 输出结果是22
-
原因:通过左边能得到整个式子的结果,因此没必要再判断右边
-
运算结果:无论&&还是||,运算结果都是最后被执行的表达式,一般用在变量赋值
2. 转换为Boolean型
2.1 显示转换:
-
Boolean(内容)
-
记忆:''、0、undefined、null、false、NaN转换为布尔值后都是false,其余则为true。
console.log(false && 20) //false console.log(5<3 && 20) // false console.log(undefined && 20) //undefined console.log(null && 20) //null console.log(0 && 20) // 0 console.log(10 && 20) // 20 console.log(false || 20) // 20 console.log(5<3 || 20) // 20 console.log(undefined || 20) // 20 console.log(null || 20) // 20 console.log(0 || 20) // 20 console.log(10 || 20) // 10
2.2 隐式转换:
-
有字符串的加法""+1,结果是“1”
-
减法-(想大多数数学运算符一样)只能用于数字,它会使空字符""转换成0
-
null经过数字转换之后会变为0
-
undefined经过数字转换之后会变为NaN
console.log(''-1) // -1 console.log('hello'-1) // NaN console.log(null + 1) // 1 console.log(undefined + 1)// NaN console.log(NaN + 1) // NaN