Пока [] + []
- пустая строка, [] + {}
- "[object Object]"
, а {} + []
- 0
. Почему {} + {}
NaN?
> {} + {}
NaN
Мой вопрос не в том, почему ({} + {}).toString()
есть "[object Object][object Object]"
, в то время как NaN.toString()
is "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)