优质广告供应商

广告是为了更好地支持作者创作

JavaScript 中 == 和 === 的区别

JavaScript 中 == 和 === 的区别

和其他语言有些不同,在 JavaScript 中除了用==操作符来判断是否相等外,还有一个===操作符,它们的区别是:==操作符会先将两边的值进行强制类型转换再比较是否相等,而===操作符不会进行类型转换。==操作符只要求比较两个值是否相等,而===操作符不仅要求值相等,而且要求类型相同。!=!==的区别也是类似的,!=号会做强制类型转换,而!==不会。

在 chrome 浏览器的环境下,测试一下就知道了:

// true
55 == '55'
// false
55 === '55'

第一个操作数是数值类型的55,第二个操作数是字符串类型的"55"。当一个操作数是字符串,另一个操作数是数值的时候,操作符==会把字符串转换成数值,所以结果就返回了true。而===不会做强制转换,所以数值类型的55和字符串类型的"55"当然是不相等的了。

// false
NaN == NaN
// false
NaN === NaN

这里有一个特殊值NaN,即 Not a Number,表示非数字,它和任何数做相等比较,包括它自己,都会返回false。所以判断NaN最好用isNaN()函数。

// true
null == undefined
// false
null === undefined

还有两个特殊值的比较也是让人觉得难以理解,null用来表示空值,undefined用来表示不存在,但这在实际开发中并没有什么用,而且==和===对它们的处理也不一样。


由于==!=带来的隐式类型转换规则非常繁琐,以及为了避免混淆数据类型导致的 bug,我们推荐使用===操作符和!==操作符。除非你真的非常清楚隐式类型转换规则,否则千万别使用==!=

优质广告供应商

广告是为了更好地支持作者创作

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 2,749评论 0 4
  • 什么是 JavaScript 语言? JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”(script...
    oWSQo阅读 1,713评论 0 1
  • 优质广告供应商

    广告是为了更好地支持作者创作

  • 本章内容 语法 数据类型 流控制语句 理解函数 3.1 语法 3.1.1 区分大小写 区分大小写 3.1.2 标识...
    闷油瓶小张阅读 419评论 0 0
  • 第1章 JavaScript 简介 JavaScript 具备与浏览器窗口及其内容等几乎所有方面交互的能力。 欧洲...
    力气强阅读 871评论 0 0
  • 孤独相对于其他情绪总是被人不自觉放大。 -深夜加班,一个人走在回家途中,倍感孤独。 -胃痛到无法入眠,这时候你是孤...
    梓瀛阅读 105评论 0 0
  • 一个人走在风里,听着树叶沙沙作响,好像是风的作弄,树干在风中摇曳,树枝疯狂的摇摆。今日在风里,狂风在一刹那却冷却了...
    _阿萝阅读 158评论 0 1
  • 优质广告供应商

    广告是为了更好地支持作者创作

  • 陈六住在翻身村村头,陈六名叫陈六但是不是排行第六,陈六是家里的老大,家里穷,兄弟多,全家只靠父亲那点教书的钱远远不...
    竹英的小世界阅读 442评论 8 6
  • 是人都会有脾气,有情绪,尤其是妈妈们。白天上班,晚上带娃,像个陀螺一样的运转,情绪就很容易累积,一旦孩子不乖,老公...
    君诚梓阅读 299评论 0 0