使用数组。适用于生成数组

时间:2016-10-01 20:00:39

标签: javascript

使用它来创建数组时,我对Array.apply行为感到困惑。

请参阅以下代码:

Array.apply(null, { length: 6 })
Array.apply(null,new Array(6))

输出[未定义,未定义,未定义,未定义,未定义,未定义],这是您所期望的,包含6个元素的数组。另一方面,如果您使用以下代码段:

Array.apply(null, [6])

在这一个中,输出是[undefined×6],这没有任何意义。

有没有人对此行为有解释?

1 个答案:

答案 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个空插槽的数组。