考虑代码
const arr = [];
[1].map(arr.push)
这给了TypeError: can't convert undefined to object
(至少在Firefox上),但几乎是同义代码
const arr = [];
[1].map(v => arr.push(v))
工作正常。
正如Thomas Babington Macaulay在他对Erasmus作品的评论中所写,"什么是......?"
答案 0 :(得分:2)
那是因为arr.push
只是对未绑定到arr
的通用函数的引用。
因此,当作为回调调用时,它不知道你要推送哪个数组
var func = [].push;
func(123); // TypeError: can't convert undefined to object
这样可行,但多个参数将传递给push
,您可能不想要
const arr = [];
[1, "a"].map(arr.push.bind(arr)); // [ 3, 6 ]
arr; /* [ 1, 0, [1, "a"],
"a", 1, [1, "a"] ] */
所以只需使用您的[1].map(v => arr.push(v))