使用它来创建数组时,我对Array.apply行为感到困惑。
请参阅以下代码:
Array.apply(null, { length: 6 })
Array.apply(null,new Array(6))
输出[未定义,未定义,未定义,未定义,未定义,未定义],这是您所期望的,包含6个元素的数组。另一方面,如果您使用以下代码段:
Array.apply(null, [6])
在这一个中,输出是[undefined×6],这没有任何意义。
有没有人对此行为有解释?
答案 0 :(得分:3)
要记住的一些事情:
Array
基本上,当使用单个参数(数字)调用Array.apply(null, { length: 6 });
Array.apply(null, new Array(6))
时,该值被视为数组的长度而不是数组的第一项。
两个
Array(undefined, undefined, undefined, undefined, undefined, undefined);
表现得像
undefined
所以他们创建了一个包含6 Array.apply(null, [6]);
s。
但是
Array(6);
就像
oranges.append("circle")
.attr("cx", function (d) {return d*2;})
.attr("cy", function (d) {return d*2;})
.attr("r", function (d) {return d/2;})
.attr("fill", "orange")
.attr("stroke", "red")
.attr("stroke-width", "4px")
var timeoranges = oranges.append("text")
.attr("x", function (d) {return d*2 - 15;})
.attr("y", function (d) {return d*2;})
.attr("dy", ".35em");
function updateOranges() {
timeoranges.text(function() {
setTimeout(updateOranges, 1000);
return Date();});
}
updateOranges();
所以它创建了一个包含6个空插槽的数组。