js世界中的四种相等

js中有四种元语相等,分别为==,===, sameValue, sameValueZero,下面分别介绍一下其异同点,在这些异同点中,关于+0,-0,NaN的判断引出了很多的设定。

==

该相等,在a,b执行比较前,会进行类型的转换,再进行比较,详情见==背后的故事

===

该严格相等,不会进行类型转换,而是直接进行比较,这里需要注意的是

+0 === -0 // true
NaN === NaN // false

sameValue

其执行算法和 === 基本相同,主要区别在于0和NaN,在该算法策略中,+0和-0不等,NaN等于NaN,js透出了一个api是Object.is,其表现如下:

Object.is(+0, -0) // false
Object.is(NaN, NaN) // true

sameValueZero

其执行算法也和===雷同,仍然是在0和NaN上有区别,但是js并没有透出api,目前在js的一些api上有体现

  • typeArray, arrayBuffer的构造函数
  • Map, Set的key值

    const m = new Map([[+0, 0], [-0, 1]]); // m只有一个值

  • Array.includes
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容