6

を評価{} + 1すると が得られますが1、変数に同じ式を代入すると、たとえばx = {} + 1、変数は文字列を保持します"[object Object]1"

代入によって右側の式のセマンティクスが変わるのはなぜですか? 右辺の式は「文脈自由」であってはいけませんか?

4

1 に答える 1

7
{} + 1

は、コード ブロックの後に が続くものとして解釈され+1、これは に評価され1ます。大戸:

x = {} + 1

new Object()プラス評価される1

元のステートメントを次のように変更した場合:

new Object() + 1

"[object Object]1"結果としてわかります。

于 2013-10-09T19:11:38.510 に答える