var a = [1,2];
var b = [3,4];
console.log(a + b); // "1,23,4"
在this的段落中出现,试图解释发生的情况
根据ES5规范第11.6.1节,如果一个操作数已经是字符串,或者如果以下步骤产生了字符串表示形式,则+算法(当对象值是操作数时)将串联在一起。因此,当+接收到任一操作数的对象(包括数组)时,它首先对该值调用ToPrimitive抽象操作(第9.1节),然后使用上下文提示调用[[DefaultValue]]算法(第8.12.8节)的数量。
在上述情况下,我不太理解ToPrimitive
。将上述规则应用于上述情况,JS引擎将尝试检查a
或b
是否为typeof String
,并且由于它们都不是,因此将执行ToPrimitive
操作应用于a
。
试图了解ToPrimitive()
是什么,如果我错了,请纠正我,explanation是ToPrimitive
也可以理解为toString()
,toNumber()
等等?如果是这样,为什么引用的上下文没有直接说toString
而不是ToPrimitive()
?