2

この質問はJavaScript言語の基礎についてです。ドット(.)演算子を使用してオブジェクトの要素にアクセスできるのに、配列要素にはアクセスできないのはなぜですか?

言い換えれば、なぜmyArray.0JavaScriptで無効なのですか?

4

4 に答える 4

3

ドット表記でアクセスされるjavascriptプロパティ名は、数字で始めることはできません。これは、javascript構文ルール/文法の一部にすぎません。したがって、ドット表記が配列に対して機能する場合でも、配列インデックスは数値であり、数値で始まるプロパティ名にはドット表記でアクセスできないため、機能しません。

配列の場合、明らかに次のものを使用できます。

myArray[0]

ただし、これは次のような番号で始まるオブジェクトプロパティでも機能します。

var x = {"12": "foo"};
alert(x["12"]);     // foo

そして、あなたはすることができません:

alert(x.12)

xがオブジェクトであり、オブジェクト"12"の正当なプロパティである場合でも。アクセスするにはを使用x["12"]する必要があります。

于 2012-05-20T07:08:53.513 に答える
0

なんで?それがjavascript構文だからです。それと同じくらい簡単です。

[x]xインデックスではなく要素を取得するために使用します.x

于 2012-05-20T07:09:57.817 に答える
0

ドット表記のプロパティ名は、有効な JavaScript ID でなければなりません。オブジェクトでも配列でも、有効な ID ではないオブジェクト プロパティ名をドット表記で使用することはできません。このようなプロパティ名の場合、プロパティ名が文字列である場合、または文字列に変換される場合は、[] 表記を使用する必要があります。

たとえば、「長さ」は有効なIDであるため、配列でドットノードを使用して長さを取得できることに注意してください。

于 2012-05-20T07:18:27.710 に答える
0

したがって、jfriend00の返信を拡張するだけです-プロパティ名が数字ではなく文字で始まるため、次のようになります

var test = new Array();
test['zero'] = "Testing";
alert(test.zero); // Does work
于 2012-05-20T07:22:22.100 に答える