2012-07-06 38 views
3

可能重複:
Are Javascript arrays sparse?把在JavaScript數組項目上的任意指標

在JavaScript中下面的 「安全」? (如在,可以預期在所有JavaScript引擎上可靠地工作)

a = []; 
a[100] = "hello"; 

a[100] == "hello"; // should be true 
+0

http://stackoverflow.com/questions/1510778/are-javascript-arrays-sparse – Brad 2012-07-06 04:44:06

+0

是的,它會工作無處不在。但是如果你實際上並不需要特定於數組的特定功能,比如'.length',那麼應該使用一個對象:'var a = {};' – Ryan 2012-07-06 04:51:24

回答

6

是的。 JavaScript中的數組很稀疏,您的代碼有望在所有JavaScript實現中工作。

您可以參閱specification(PDF)的第15.4節中的要求。

簡短摘要:數組是具有數字名稱的屬性添加元素(如`a [123] =「test」)時調整長度屬性的特殊對象。像join這樣的其他方法會考慮到管理操作的長度。

0

是的,爲什麼它不工作?它完全可以接受的語法

+0

從句法上來說,我只是想知道,在JavaScript中定義的行爲。 – rfw 2012-07-06 04:44:28

+1

@rfw,它的定義很清楚,它在語言中是有效的,但是實現的方式可能會有所不同。另請參閱http://stackoverflow.com/a/1510842/362536 – Brad 2012-07-06 04:46:07

+0

有很多「可接受的語法」的語句,這些語句不起作用。 – 2012-07-06 04:46:24

0

你甚至可以假設

a[100] === "hello"; // will return true