在javascript中a == b的结果究竟是什么?执行非严格相等操作时究竟遵循着怎样的规则,让我们追随着javascript中幽暗的小路去发现其中的奥秘。
1. a和b的类型一致时
当a和b的类型是一样的时候,会按照===进行比较,返回对应的结果。对此我们无需过多解释
2. 当a和b的类型不一致时
这是我们要重点讨论的问题,a和b之间会进行类型转换,javascript会将a和b转换为相同的类型再进行比较,==的一边或两边都可能被转换。
javascript中有一对好基友null和undefined,而且它俩还结为联盟一致对外。null == undefined 返回true,通常所有的对象都与 undefined 和 null 不相等。
javascript是个偏心眼,对于原始类型,它更偏向于把a和b转化为number再进行比较。
javascript还是个懒虫,对于Object类型,它会获取Object的原始值之后再进行比较。
记住这三点:好基友、偏心眼、懒虫对于我们理解 == 背后的故事有很大的帮助。
网友评论