减法运算符如何触发数组到数字的转换?

How does subtraction operator trigger an array-to-number conversion?

这是我的代码的 2 个示例。第一个是:

console.log([4] + 10); //"410" 

据我所知,加法运算符只能用于数字和字符串。因此,首先, [4] 应该转换为数字或字符串。尝试将操作数转换为原始数据类型时,valueOf()toString() 运行。默认情况下,valueOf() returns 一个数组,所以这个方法被忽略了。 toString() 被调用。它将复杂数据类型转换为字符串。这对我来说完全可以理解,但是...

第二个例子是怎么回事?

console.log(10 - [4]); //6 

如果此方法默认 returns 数组,我不明白 valueOf() 如何将数组转换为数字。这里发生了什么?

它是这样的:

10 - [4]
10 - '4' // array to string
10 - 4   // implicit casting of all operands to number with minus operator
6        // result