结果: true
1.根据运算符优先级,先算逻辑非(具体参考优先级表)
只有 '' 0 NaN null undefined转换布尔值后 是false
console.log(![ ]); // true 接下来判断 console.log( [ ] == false); 也就是空数组(object类型)和false(基本数据类型)比较结果
2. 当基本类型和object类型比较时,先将object类型转化为基本数据类型
转换规则:
- 调用valueOf( )方法 默认返回对象原始值
- 调用 toString( )方法 默认返回对象的字符串值
例如:
var num = 123; var arr = []; var obj = {}; console.log(num.valueOf()); // 123 console.log(arr.valueOf()); // [] console.log(obj.valueOf()); // {} console.log(num.toString()); // '123' console.log(arr.toString()); // '' console.log(obj.toString()); // [object Object]
回归正题: 判断 console.log( [ ] == false);
console.log([ ].valeOf( )); // [ ]
console.log([ ].toString( )); // ' '
接下来判断 console.log ( ' ' == false);
3. 字符串和布尔值比较时 都转为数字
console.log(Number(' ')); // 0
console.log(Number(false)); // 0
4. console.log( 0 == 0 ); // true 所以答案为true