主页 谈谈javascript “==”以及“===”的缺陷,Object.is()的使用 正文

谈谈javascript “==”以及“===”的缺陷,Object.is()的使用

作者:bbd_776651904   更新时间:2019年12月25日 08:45   


前序

一直相信,一个好的编程语言要符合大众的逻辑,而不是玩文字游戏,让大众去掌握它的缺陷。JavaScript的 == 和 === 设计就是缺陷。

“==” 被定义为比较时候会进行类型转换,然后再做比较,这种方式在多数语言当中是没有的。

“===” 是直接比较,不做类型转换

例子

1 == "1" 

// true

1 ==="1" 

// false

如上这个例子,正确的比较是第二种,第一种显得有些奇怪。

1 == Number(1) 

// true

1 === Number(1)

//fasle

按照原始的分析,Number(1)是一个对象,而1 基本类型number,二者类型不同自然不能作比较。这种在多数编程语言也是这么做的,但作为日常的说法,二者都是为了表示数字1,作比较的结果是相等才对。随意第二个例子当中,则认为第一个比较合理,第二个比较结果不合理。

Object.is()

在ES6当中有个Object.is()的内置函数,很好的解决了这些不成文的矛盾。如下所示,就比较合理了

Object.is(1,Number(1))

// true

Object.is(1,"1")

// false


目录

关于站点

变饼档 变饼档 头条号 微信号

@变饼档

网站备案/许可证号 陕ICP备17000772号-1

联系邮箱 942242856@qq.com


@技术支持

前端 layui,jquery,vue

后端 django,django-simpleui