2

重複の可能性:
CodeMash 2012 の「Wat」トークで言及されたこれらの奇妙な 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

前もって感謝します。

4

3 に答える 3

11

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

それで

console.log( [] + {} );

...に来る

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

...これは

console.log( "" + "[object Object]");
于 2012-05-05T12:45:25.950 に答える
2

オブジェクトを配列に追加しているので、最後に配置されます。+を2つのオブジェクトに適用する場合、意味のある操作は、文字列に変換して連結することだけです。

于 2012-05-05T12:45:53.933 に答える
1

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

于 2012-05-05T12:47:28.273 に答える