说出 == 和 ===区别,什么情况用 ==
Jioho 6/27/2020 Javascript
- == 叫做
相等运算符
,=== 叫做严格运算符
- 使用
==
的时候,如果 2 边的值类型不一致,会自动转换为同一类型在比较如: 1 == '1' // true
- 使用
===
的时候,不会进行类型转换,必须类型一致,值也一致,才返回 true
看部分题目
# [] == ![]
console.log([] == ![]) // true
1
查看解析
- [] == ![]
- [] == !true // ! 操作符的优先级高于 == ,所以先执行 ! 操作
- [] == false // !true 得到的是 false
- [] == 0 //比较规则 1:如果值为 true 或 false,则转成 1 或 0 来继续比较
- [] == 0 //执行左侧的 [] 的 valueOf 方法,而 [] 是对象,所以 [].valueOf() 返回本身[]
- "" == 0 //执行左侧的 [] 的 toString 方法
- [].toString() 返回 ""0 == 0 //比较规则 2:如果一个值是数字,一个值是字符串,则把字符串转换为数字,再进行比较,"" 转成数字是 0。最终是执行 0 == 0 ,结果为 true
比较结果为 true 是因为他们在不断转换的过程中,最后转成了 0 和 0 比较,所以返回了 true
# NaN === NaN
简而言之,NaN 代表“不是数字”,仅因为一个值不是数字,而另一个值不是数字并不意味着这些变量。缺点是您无法真正检查变量是否正在使用 NaN 使用 myVariable === NaN。可以使用 Number.isNaN()
功能或myVariable!== myVariable
进行检查。