JavaScript!==和!=

!== 与 != 的区别

这次笔记主要是理清JavaScript中的 != 和 !==的区别
在JavaScript中“===”叫做严格运算符,而“==”叫做相等运算符。

严格运算符的运算规格如下(抄录知乎某兄弟)

  • 不同类型值

    如果两个值得类型不同,直接返回false。

  • 同一类的原始类型值

    同一类型的原始类型的值(数值、字符串、布尔值)比较值,如果值相同就返回true,值不同就返回false。

  • 同一类的复合类型值(重点)

    两个复合类型(对象、数组、函数)的数据比较时,不是比较他们的植是否相等,而是比较它们是否指向同一对象

  • undefined和null

    nuderfined 和 null与自身严格相等

    1
    2
    3
    4
    null === null //=>true
    undefined === undefined // =>true
    null === undefined // =>false
    null == undefined //=>true

相等运算符在比较相同类型的数据时,与严格相等运算符一样。

在比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符进行比较

  • 原始类型的值

    原始类型的数据会转换数值类型再进行比较。字符串和布尔值都会转换成数值

对高级的类型,比如函数,对象,数组,===与==没有区别。

最后总结,最好用严格运算符。