大家在工作中应该会看到很多人有时候用"==",有时候用"===",今天就讲讲"==" 先做几个题目
[AppleScript] 纯文本查看 复制代码 console.log(1,false == 0)
console.log(2,false == 1)
console.log(3,false == "1")
console.log(4,false == null)
console.log(5,false == undefined)
console.log(6,1 == [])
console.log(7,1 == [1])
console.log(8,[1] == [1])
console.log(9,[] == ![])
答案:1 true,2 false,3 false,4 false,5 false,6 false,7 true,8 false,9 true 刚开始大家做这些题的时候可能心里是很没有底气的,基本是凭感觉,那么我来说一下 相等的转换规则
- NaN 与任何值不相等,包括NaN自己
- null 除了 null 和 undefined,与任何值不相等
- undefined 除了 null 和 undefined,与任何值不相等
- 操作数两边有数字或者是布尔类型的,就都转换成 数字进行比较
- 操作数两边如果有字符串,都转成字符串进行比较
- 如果操作数两边都是引用类型,就比较地址
注意点:上面的规则是从上往下一条条的去匹配规则,匹配到了就应用哪条规则
[AppleScript] 纯文本查看 复制代码 console.log(NaN == 1) // false
console.log(NaN == 0) // false
console.log(NaN == NaN) // false
console.log(null == 1) // false
console.log(null == 0) // false
console.log(null == undefined) // true
console.log(null === undefined) // false
console.log(false == 1) // false 0 == 1
console.log(false == "1") // false
console.log([] == ![]) // true
最后一个为true的原因,![] 为Boolean的false 第4条转换成0,[] 转换成Boolean为true 但是转换成数字是0 所以[] == ![] 的结果是true
提示: Boolean() 函数可以将任意类型的值转为布尔值 它的转换规则相对简单:除了以下五个值的转换结果为false,其他的值全部为true undefined,null,0,NaN,''(空字符串)
|