js中 0==‘0‘、0==[] 为 true ,‘0‘==[] 为false

文章目录

    • 问题
    • 分析

问题

js中 0==‘0’、0==[] 为 true ,为什么 ‘0’==[] 为false

js中 0==‘0‘、0==[] 为 true ,‘0‘==[] 为false_第1张图片

分析

== 是弱类型比较

  1. 当两者类型不同时会发生类型转换
  2. 0 == “0”:先把“0”转为number类型再比较;
  3. 0 == []:有对象的话,先获取对象的原始值,如果原始值为number类型,直接与0比较;如果原始值为字符串类型,先转为number类型再比较;(在这里[]的原始值为“”,符合第二种情况)
  4. “0” == []:首先获取[]的原始值,即空字符串“”,然后进行两个字符串“0”“”之间的比较。字符串之间的比较遵循的是逐个字符使用基于标准字典的 Unicode 值来进行比较的规则,所以这俩字符串不同。

前两者等式成立都是因为发生了一次类型转换,而后者如果要成立,就要发生两次类型转换,这应该是非法的。真正成立的等式是’’==[],只发生一次类型转换其实你拿str=“0”,然后取str[0]就知道这个其实是有值的,这显然不符合空数组的定义

你可能感兴趣的:(JS解决方案,javascript,linux,开发语言)