== 两边数据类型不同,要先转换为相同类型,然后再进行比较
@1 对象==字符串,将对象转为字符串(String([val]))有三步骤,具体看之前的笔记
@2 null == undefined -> true null === undefined -> false null/undefined和其他任何值不相等
@3 对象==对象,比较是地址值
@4 NaN !== NaN Object.is(NaN, NaN) -> true
@5 除了以上情况,都是转为数字进行比较的
=== 绝对相等,如果类型不同,直接false,工作中使用这种
// 要转为数字比较,用Number([]) -> 0 Number(false) -> 0
console.log([] == false) // true
// 先处理![],因为只有0/NaN/null/undefined/空字符串为false,所以![]为false
console.log(![] == false) // true
console.log(typeof undefined == typeof null) // false
// 这里NULL是未定义的变量,typeof NULL -> 'undefined'
console.log(typeof undefined == typeof NULL) // true
// 'function' == 'function'
console.log(typeof function () {} == typeof class {}) // true
网友评论