2016-03-11 10 views

答えて

35

{a:1,b:2}.constructorは無効な構文ではありませんが、{}はブロックまたはオブジェクトを表しているため、あいまいですか?ですから、({a:1,b:2}).constructorのようにカッコで表現を明確にする必要があります。 JavaScriptでは、オブジェクトを使用することが分かっています。

あなたはそれが明らかにオブジェクトである状況で、その構文を使用する場合は、内容が不明確ではない場合:

console.log({a:1,b:2}.constructor) // works fine 
13

行頭のカーブブラケットは、object literalの代わりにcode blockと認識されます。

コンソールでエラーを調べると、Uncaught SyntaxError: Unexpected token :が表示されます。したがって、エラーはコンストラクタプロパティを呼び出すことではありません。また

、コンソール

{a:1} 

JSがlabelない財産aを持つオブジェクトを持つブロックとしてこれを解釈して書きます。

+0

は'何ですか。ライン?セミコロン依存言語(特に面白いルールを持つJS)は、 'line'については知らない。しかし、 '; {1:2} .constructor'は無効です。おそらく 'line'を介して' statement'や 'expression'を意味していたでしょうか? – cat

+1

@tac、うん、ここの 'statement'はもっと正しいようです – Grundy

関連する問題