2014-12-02 17 views
0

下面的代碼返回true。如果是這種情況,爲什麼代碼中的第4行出錯?爲什麼不能像下面給出的那樣訪問數組?

var x = ['a', 'e', 'f']; 
x[2]; 
alert('2' in x); 
alert(x.2); 
+2

我敢打賭,這是同樣的原因,你可以沒有像var 2nd =「second」這樣的東西。標識符不能以數字開頭。 – 2014-12-02 05:32:27

回答

2

您可以用點語法訪問的唯一屬性名稱是那些符合JavaScript的規則標識符名稱(第一個字符是字母,_或$,而其餘的字符是字母,數字,_,或$)。

你在那裏有一個語法錯誤,這就是它出錯的原因。

MDN

點標記

GET = object.property;
object.property = set;

屬性必須是有效的JavaScript標識符,即包含下劃線(「_」)和美元符號(「$」)且不能以數字開頭的字母數字字符序列。例如,對象。$ 1是有效的,而object.1不是。

您可以使用方括號表示法與任何名稱訪問屬性,所以下面的任一會回到你想要的物品:

x[2]; 
x["2"]; 
+0

函數foo(a,b){0}參數[1] = 2; alert(arguments.length); } foo(1);爲什麼它會提醒1而不是2。它的差異問題! – 2014-12-02 05:46:15

+0

@Joysamvedh如果你有一個不同的問題,你應該問它作爲一個不同的問題,但答案是'arguments'不是一個數組,因此它不具有數組的所有行爲。 – JLRishe 2014-12-02 05:48:15

相關問題