说出 == 和 ===区别,什么情况用 ==

6/27/2020 Javascript
  1. == 叫做 相等运算符 ,=== 叫做 严格运算符
  2. 使用 == 的时候,如果 2 边的值类型不一致,会自动转换为同一类型在比较 如: 1 == '1' // true
  3. 使用 === 的时候,不会进行类型转换,必须类型一致,值也一致,才返回 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 进行检查。

Last Updated: 5/9/2021, 10:45:03 PM