2012-05-05 11 views
0

可能性の重複:
What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wat' talk for CodeMash 2012?[] + {}は[オブジェクトオブジェクト]と同じですが、Javascriptでは?どうやって?

私はJavaScriptに非常に新しいです。私はこのようなコードを持っている:

<script type="text/javascript"> 
console.log([] + {}); 
</script> 

私のGoogle Chromeブラウザのログに:

[object Object] 

それは私には有線に見えます!そして、このようなことは何か:

<script type="text/javascript"> 
console.log({} + {}); 
</script> 

は生産ん:

[object Object][object Object] 

は正確に両方のケースでこっち何が起こっていますか?どうすれば[]{}の2つの結果をobjectsの配列に追加しますか?

ありがとうございます。

+0

http://www.shopify.com/technology/5370262-wat-a-funny-look-at-ruby-and-javascript-oddities – jbabey

+0

この質問は何度も尋ねられました。 – Sarfraz

+0

Blastは、これが答えるときに重複していることを認識していませんでした。ああ、よく... –

答えて

10

+ operatorを数字以外で使用すると、文字列の連結が行われるため、オペランドが文字列に変換されます。空の配列becomes an empty stringは暗黙的にjoinを呼び出し、エントリがないためjoinは空の文字列を返します。オブジェクトbecomes "[object Object]"

ので

console.log([] + {}); 

...あなたは配列にオブジェクトを追加する

console.log("" + "[object Object]"); 
2

にダウンしていた...

console.log(String([]) + String({})); 

に降りてくる - それが置かれています終わりに。 2つのオブジェクトで+を適用すると、意味をなさない操作だけが文字列に変換して連結することです。

1

[]は、連結演算子のために文字列に変換される空の配列です。 {}は空のオブジェクトです。

関連する問題