一方では[] + []
、空の文字列で[] + {}
あり"[object Object]"
、かつ{} + []
あります0
。なぜ{} + {}
NaNなのですか?
> {} + {}
NaN
なぜ私の質問ではありません({} + {}).toString()
されて"[object Object][object Object]"
いる間NaN.toString()
で"NaN"
、この部分はすでにここに答えを持っています。
私の質問は、これがクライアント側でのみ発生するのはなぜですか?サーバー側(Node.js){} + {}
は"[object Object][object Object]"
です。
> {} + {}
'[object Object][object Object]'
まとめ:
クライアント側:
[] + [] // Returns ""
[] + {} // Returns "[object Object]"
{} + [] // Returns 0
{} + {} // Returns NaN
NaN.toString() // Returns "NaN"
({} + {}).toString() // Returns "[object Object][object Object]"
var a = {} + {}; // 'a' will be "[object Object][object Object]"
Node.js:
[] + [] // Returns "" (like on the client)
[] + {} // Returns "[object Object]" (like on the client)
{} + [] // Returns "[object Object]" (not like on the client)
{} + {} // Returns "[object Object][object Object]" (not like on the client)
{}
コンテキストに応じて、式またはオブジェクトプリミティブとして解釈できることを忘れないでください。たぶん、コードはクライアントとサーバーで同じですが、コード{}
を入力するコンテキストが異なるため、解釈が異なります。