0

[ ][[ ]]の結果は未定義です 。この[[ ]][ ]はSyntaxError: Unexpected token ]をスローします。説明はありますか?

4

7 に答える 7

4

構文は、によってobject[key]のプロパティを取得するために使用されます。内部にある必要があります。そうしないと、構文エラーが発生します。objectkeykey[]

[][[]]、オブジェクトは空の配列[]、キーは別の空の配列[]です。

[[]][]の場合、オブジェクトは内部に空の配列を持つ配列ですが、内部にキーはありません[]

于 2013-10-09T09:37:54.240 に答える
2

なぜ誰もがこのようなものを使いたがるのかわかりませんが、ここに説明があります:

ケース 1:

[]空の配列です。[n]これに ( )を追加することで[][n]、n 番目の要素を参照します。nあなたの場合は[]です。インタープリターはそれを使用可能な値に変換しようとし、最終的に空の文字列 ("") になります。したがって、実際に[][""]undefinedである参照を試みます。

ケース 2:

[[]]空の配列内の空の配列です。それに追加[n]することで ( [[]][n])、外側の配列の n 番目の要素を参照します。インデックスnを提供する必要があります。そうしないと、エラーがスローされます。これは、あなたの場合に発生します。

于 2013-10-09T09:37:10.150 に答える
1

なぜこれを使用する必要があるのか​​ 想像できませんが、ここに私の説明があります:

[[]] は new Array( new Array()) であり、1 つの要素を持つ配列であり、空の配列です。

[] は空の配列であるため、[][2] または [][0] を実行すると undefined が返されます。2 番目の [] はインデックスです。

したがって、[] [[]] では、インデックス [] を探しています。

[][0] == [][[]]

しかし [[]] [] では、インデックスは空で、[1,2,3][] と同等です -> SyntaxError: Unexpected token ]

于 2013-10-09T09:37:30.450 に答える
0

JavaScript オブジェクトには、関連付けられたプロパティがあります。単純なドット表記またはブラケット表記を使用してオブジェクトのプロパティにアクセスし、参照すると値non existing keyが得られundefinedます。

var obj = {};
obj[ 'key' ] 

重要なことの 1 つは、JavaScript 配列では Object であるということです

console.log( [] instanceof Object ) // gives true so it act like object

そして面白いのは、以下のように渡すことです。

var keyCanbeFunction = function(){};
var keyCanbeObject = {};
var keyCanbeArray = [] ;

console.log( obj[ keyCanbeArray ] ) // gives undefined, that key not exists

および 1 番目のケース:

var obj = [];
obj[ keyCanbeArray  ] // gives undefined

および 2 番目のケース:

var obj = [[ ]]
obj[]; // where is key ???  
于 2013-10-09T10:06:41.010 に答える
0

わかった。キーを使用して配列にアクセスするだけです。そうしないと、構文エラーがスローされます。

[][[]]- 配列が定義されて[]いて、未定義の配列からキーにアクセスしています。

[[]][]- 配列が定義されていて、その配列からアクセスするためのキーを渡していません - 構文エラー。

于 2013-10-09T09:38:15.027 に答える