2011-12-18 18 views
7

は括弧付きオブジェクトリテラルのプロパティに直接アクセスすると、SyntaxErrorがスローされるのはなぜですか? <code>{}</code></p> <pre><code>{}.a </code></pre> <p>が、私はエラーを取得するには、オブジェクトのプロパティ<code>a</code>にアクセスしようとすると

SyntaxError: Unexpected token . 

すべての罰金です:

({}).a 

私はエラーが出るのはなぜ最初の場所に?あいまいさはありますか?

+0

ちょうどそれを許可していませんJavaScriptシンタックス。 – Eliasdx

+0

'{}'という式は、独自のプロパティを持たない新しいネイティブオブジェクトを評価します。 'Object.prototype'メソッドの1つにアクセスしようとしていますか? –

+1

[オブジェクトのプロパティに即座にアクセスする]の複製が可能です(http://stackoverflow.com/questions/7518538/immediately-accessing-an-objects-property) – RightSaidFred

答えて

15

中括弧は、オブジェクトリテラルではなくblock statementと解釈されます。左中括弧で式文を始めることはできません。

仕様状態:それはブロックと、それが曖昧になるかもしれないので

NOTEExpressionStatementは、開口部の中括弧 で始めることはできません。また、 ExpressionStatementFunctionDeclarationのと、それが曖昧になるかもしれない ためfunctionキーワードで始めることはできません。

出典:http://es5.github.com/x12.html#x12.4

1

{}は、オブジェクトを構築するために存在します。通常、最初に新しいオブジェクトを変数に割り当てます。

var o = { 
    a: "b" 
}; 

console.log(o.a); 

が、これもまた可能である:

console.log({ 
    a: "b" 
}.a); 
関連する問題

 関連する問題