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 |
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于