【发布时间】:2011-12-02 20:20:40
【问题描述】:
之前在搞乱一些数组的东西,发现了一个非常奇怪的警告
考虑这段代码:
[1,2,3].map(function(el) { return el * 2}).push(4*2).join(" ");
在写它时,我希望得到:2, 4, 6, 8
相反,它引发了异常。在进一步调查中,.push 返回传递数组的调整后的.length:
[1,2,3].map(function(el) { return el * 2}).push(4*2);
>>> 4
[1,2,3,4].map(function(el) { return el * 2}).push("hi");
>>> 5
并且 typeof 是数字,所以 .join 抛出,因为它不在数字原型中。
似乎您可以传递/链接任何其他数组方法,但不能推送。虽然这不是问题,并且如果将结果传递给变量它就可以工作,但为什么会按原样中断以及为什么在此处返回长度属性?
这很好用……
var foo = [1,2,3,4].map(function(el) { return el * 2});
foo.push(5*2);
console.log(foo);
>>> [2, 4, 6, 8, 10];
可能是另一个 wtfjs 时刻......
【问题讨论】:
标签: javascript push