文章目录
- 问题
- 分析
问题
js中 0==‘0’、0==[] 为 true ,为什么 ‘0’==[] 为false

分析
==是弱类型比较
- 当两者类型不同时会发生类型转换
0 == “0”:先把“0”转为number类型再比较;0 == []:有对象的话,先获取对象的原始值,如果原始值为number类型,直接与0比较;如果原始值为字符串类型,先转为number类型再比较;(在这里[]的原始值为“”,符合第二种情况)“0” == []:首先获取[]的原始值,即空字符串“”,然后进行两个字符串“0”与“”之间的比较。字符串之间的比较遵循的是逐个字符使用基于标准字典的 Unicode 值来进行比较的规则,所以这俩字符串不同。
前两者等式成立都是因为发生了一次类型转换,而后者如果要成立,就要发生两次类型转换,这应该是非法的。真正成立的等式是’’==[],只发生一次类型转换其实你拿str=“0”,然后取str[0]就知道这个其实是有值的,这显然不符合空数组的定义



















