4

Javascript での追加は本当に素晴らしいです。
Chrome と Firefox では、{} + 1番号 1 に等しくなります。ただし、Node.js では、{} + 1文字列 '[object Object]1' に等しくなります。一方、1 + {}ブラウザーと Node.js の両方で '1[object Object]' に等しい。ブラウザーで 1 に等しい
理由を誰が説明できますか?{} + 1

4

1 に答える 1

14

これは少し複雑です。これは、ほとんどのJavaScriptエンジン{}がオブジェクトではなくコードブロックとして解釈するために発生します。したがって{}+1、本質的にはと同じ+1です。あなたがそうするなら(例えば)

({}+1})

その場合、角かっこ内のコードは()、コードブロックではなく、式として解釈されます。したがって{}、実際のオブジェクトになります。

詳細については、こちらをお読みください。

http://www.2ality.com/2012/01/object-plus-object.html

この記事では、Node.Jsで異なる理由についても説明しています。

于 2012-09-04T13:08:49.337 に答える