为什么
JavaScript允许您将数组与单个数值乘以另一个数值或另一个具有单个数值的数组?:
[3] * 3; // 9 [3] * 2; // 6 [3] * [3]; // 9 [1,2] * 2 // NaN
我希望每次都能返回NaN,但是我在Chrome中的实验证明情况并非如此.
这是预期的行为吗?这种行为有意义吗?如果是这样,为什么?
解决方法
[3] * 3;
采取以下步骤:
>数组转换为字符串[3] => “3”
>将字符串转换为数字(“3”)=> 3
> 3 * 3给出9
同样,对于[1,2] * 2:
>数组转换为字符串[1,2] => “” 1,2\”
>将字符串转换为数字(“1,2”)=>为NaN
> NaN * 3得到NaN
对于我们之间的ECMA怪胎;)从here开始并遵循路径乘法运算符=> ToNumber => ToPrimitive => [[DefaultValue]](数字)=> valueOf =>的toString