下面的代碼返回true。如果是這種情況,爲什麼代碼中的第4行出錯?爲什麼不能像下面給出的那樣訪問數組?
var x = ['a', 'e', 'f'];
x[2];
alert('2' in x);
alert(x.2);
下面的代碼返回true。如果是這種情況,爲什麼代碼中的第4行出錯?爲什麼不能像下面給出的那樣訪問數組?
var x = ['a', 'e', 'f'];
x[2];
alert('2' in x);
alert(x.2);
您可以用點語法訪問的唯一屬性名稱是那些符合JavaScript的規則標識符名稱(第一個字符是字母,_或$,而其餘的字符是字母,數字,_,或$)。
你在那裏有一個語法錯誤,這就是它出錯的原因。
從MDN:
點標記
GET = object.property;
object.property = set;
屬性必須是有效的JavaScript標識符,即包含下劃線(「_」)和美元符號(「$」)且不能以數字開頭的字母數字字符序列。例如,對象。$ 1是有效的,而object.1不是。
您可以使用方括號表示法與任何名稱訪問屬性,所以下面的任一會回到你想要的物品:
x[2];
x["2"];
函數foo(a,b){0}參數[1] = 2; alert(arguments.length); } foo(1);爲什麼它會提醒1而不是2。它的差異問題! – 2014-12-02 05:46:15
@Joysamvedh如果你有一個不同的問題,你應該問它作爲一個不同的問題,但答案是'arguments'不是一個數組,因此它不具有數組的所有行爲。 – JLRishe 2014-12-02 05:48:15
我敢打賭,這是同樣的原因,你可以沒有像var 2nd =「second」這樣的東西。標識符不能以數字開頭。 – 2014-12-02 05:32:27