4

ECMA-262仕様によると、次のステートメントが返され1ます。

eval("1;;;;;")
eval("1;{}")
eval("1;var a;")

それを保証する:

StatementListの値は、StatementListでStatementを生成する最後の値の値です。

これらのさまざまな収益について説明できますか?

eval("{}") // undefined
eval("var a={}; a;") // {}
eval("var a={};") // undefined

1;との違いは何{};ですか?

4

2 に答える 2

6

そのままにしておくと、オブジェクトではなくブロック{}として解釈されます。ステートメントが含まれていないため、たとえば、の値には影響しません。オブジェクトとして解釈されるように強制するには、括弧を使用できます。eval("1;{}")

eval("1;({})"); // {}
于 2012-05-28T22:49:45.633 に答える
2

evalコードブロックの区切り文字として解釈しているように見えるため{}、固有の値はありません。

于 2012-05-28T22:52:37.483 に答える