次の結果がどのように評価されたかを誰か説明してもらえますか?
{} + {} // NaN
[] + {} // "[object Object]"
{} + [] // 0
[] + [] // ""
次の結果がどのように評価されたかを誰か説明してもらえますか?
{} + {} // NaN
[] + {} // "[object Object]"
{} + [] // 0
[] + [] // ""
これについての完全な説明があります。確認してください。
オブジェクトではなくブロックと{} + {}
するNaN
場合は注意してください。{}
({}+{})
する必要があります'[object Object][object Object]'
実際の結果は次のとおり
console.log({}+{}) // '[object Object][object Object]'
console.log([]+{}) // '[object Object]'
console.log({}+[]) // '[object Object]'
console.log([]+[]) // ''
オブジェクトとその文字列表現を含む配列を追加すると、常に結合になります
例えば:
[1] + [2] // is merged to "12", so [] + [] is an empty string ""
2番目の例でも同じです
['test'] + {} // "test[object Object]"
したがって、空の配列に空のオブジェクトを加えたものは、[object Object]
空のオブジェクトに追加するのも簡単です:
単純な空のオブジェクトを評価します。{} // results in undefined
2 つの値を加算するのは、2 つのundefined
値を加算NaN
する方法がないためです。
注: 戻り値は、JavaScript の実装 (つまり、ブラウザまたは環境) によって異なります。
{} + {}
2 つのオブジェクトに対して加算や操作を行うことはできません
[] + {} // "[object Object]"
それは文字列とオブジェクトの間の単なる連結であり、同じ結果が得られますalert({});
{} + [] // 0
同じ
[] + [] // ""
2 つの空文字列の連結 = 空文字列。