难度级别:初级及以上 提问概率:75%
因为==操作符会存在数据类型的隐式转换,所以最终判断的是转换后的值是否相等,经过总结发现,除了null、undefined和NaN以外,其他的数据类型在遇到==数据转换时候,更倾向于先转为数值类型再进行比较,比如布尔类型的true,会先转换为1,数值字符串会先转换为数值,即便是对象类型也会根据自身的valueOf方法,判断是否有可以转换为数值的返回值。从这一点看,==操作符在项目中,的确会存在一定的隐患,我们看一下==操作符的一些典型判断代码
Javascript代码:
<script>
// NaN、null和undefined的比较判断
console.log(NaN == NaN); // 包含NaN就会返回false
console.log(null == undefined); // true
// 字符串类型转换
console.log('hello' == 1); // false
console.log('1' == 1); // true
// 布尔类型转换
console.log(true == 1); // true
// 对象比较看引用是否相同