2016-05-04 88 views
1

假設我們有3個數組:JavaScript中的[undefined,undefined,undefined]和new Array(3)如何不同?

var arr1 = [undefined, undefined, undefined]; 
var arr2 = [, , ,]; 
var arr3 = new Array(3); 

是所有的人都在相同的JavaScript? 如果我們想要使用undefined作爲固定大小數組的默認值,我們可以互換使用它們嗎?

+0

@Pointy我在你的評論之前就已經看到了..愚蠢的我.. –

+1

@MateiMihai這是一個區別,但是對於很多目的來說並不重要。真的在練習中,我總是使用'[]'作爲空數組。依賴陣列長度看起來像是一個非常脆弱的設計模式。 – Pointy

回答

5

第二個是相同的(儘管第二個可能會導致一些瀏覽器的問題),但第一個是不同的。

第一個

var arr1 = [undefined, undefined, undefined]; 

使得明確分配給陣列中的前三個索引。即使你分配undefined,事實指標01,並且2是賦值操作的目標意味着數組的那些元素將被視爲「真正」的方法,如.reduce()

[undefined, undefined, undefined].reduce(function(c) { return c + 1; }, 0); 
// 3 

[,,].reduce(function(c) { return c + 1; }, 0); 
// 0 

許多Array.prototype方法跳過未初始化的數組元素。