看完此文你可以完全不需要背诵复杂冗长的 ECMA 规范, 用逻辑即可推理
现在, 我们假装从 JS 设计者的角度来聊聊隐式类型转换, 首先要记住, JS 作者的”初衷”是美好的, 他希望 == 是最顺手最快捷的比较...我们知道 Primitive(原值)和非 Primitive 比较, 需要把非 Primitive 转换成 Primitive 才可以
[] 是一个对象, 因此需要 toPrimitive()
简单的说..., 大部分对象最后都是用 toString() 来转换成 Primitive
此处没聊 toPrimitive() 中的 valueOf() 单纯是因为面试题很少涉及
你也许会问为啥是用 toString...这就是 JS 对新人友好的地方, JS 的对象都可以打印输出, 自带人性化展示, 在终端上人性化展示, 那当然是用字符串啦, 因此选择用 toString 转换 Primitive 理所因当
我们来看看数组的...要是能转的话确实要转, 但 null 和数字0本身已经是 Primitive 了, 没有机会再走一遍 toPrimitive(), 因此等号两边始终无法转换成同类型, 只能返回 false
为什么 null