比较两个同为字符串、数值或布尔值的变量是否相等,是一件比较简单的事。
但是涉及到对象的比较时,这个问题就比较复杂了。
早期的ECMA Script会在执行比较之前,先将对象转换成相似的类型。
但是这样的转换是否合理,存在质疑。
最终,ECMA Script的解决方案就是提供两组操作符:
相等和不相等——先转换再比较;
全等和不全等——仅比较而不转换。
中文名 | 符号 | 异同 |
---|---|---|
相等和不相等 | == | 转换 |
全等和不全等 | === | 不转换 |
转换不同的数据类型的基本规则
数据类型 | 操作 |
---|---|
布尔值 | 布尔值➡数值 |
字符串+数值 | 字符串➡数值 |
对象+非对象 | valueOf() |
Null + Undefined | 相等 |
NaN + 包括NaN在内的任何数据类型 | 不相等 |
两个对象 | 比较是不是同一个对象 |