Sym - 一个用 Java 实现的现代化社区平台 • 源码注册

Pipe - 小而美的开源博客平台 • 体验皮肤
Solo - 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧! • 源码下载
Wide - 一个基于 Web 的 Go 语言 IDE • 教程试用

等于操作符 `==` 和 `===` 有什么区别

2019-01-04

回答

三个等号 === 表示严格相等,也就是说类型和值都必须相同。两个等号 == 会使其中一边的类型进行强制转换,使等号两边的类型都相等后再对数值进行比较。

加分回答

  • 尽量使用全等操作符。因为其没有隐式转换,这样结果会比较容易预测、计算也会比较快
  • 除了等于操作符,还可以使用 Object.is 进行同值比较。他有着自己的特殊用途,不应说他更宽松或更严格于其他等于操作符
  • 附表一张
x y == === Object.is
undefined undefined true true true
null null true true true
true true true true true
false false true true true
"foo" "foo" true true true
{foo:"bar"} x true true true
0 0 true true true
+0 -0 true true false
0 false true false false
"" false true false false
"" 0 true false false
"0" 0 true false false
"17" 17 true false false
[1,2] "1,2" true false false
new String("foo") "foo" true false false
null undefined true false false
null false false false false
undefined false false false false
{foo:"bar"} {foo:"bar"} false false false
new String("foo") new String("foo") false false false
0 null false false false
0 NaN false false false
"foo" NaN false false false
NaN NaN false false true

返回总目录

每天 30 秒


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

3 评论
Eddie • 2019-01-04
回复 删除

V 姐用 typescript 吗?

Vanessa • 2019-01-04
回复 删除

还没机会用的上,下个项目可以考虑下

EchoCow • 2019-01-05
回复 删除

webstorm 里面语法检测 js 要用 ===,所以一直用的 ===,强迫症受不了警告