2016-06-01 7 views
-2

先日、私はredditでこれを見つけました。ポスターは、類似{} + "" vs "" + {} - 加算の一貫性

"" + {} 

が空[object Object]に等しいながら

{} + "" 

は、0に等しいことに留意しました。

普通の数学の規則ではこれは奇妙だと言われますが、なぜこのようになりますか?

+0

言語がどのように指定されているかがわかるためです。 –

+0

また、関連するビデオを見てください:[wat](https://www.destroyallsoftware.com/talks/wat) –

+2

私は、これの重複を検索する方が簡単だったと思います。 – Pointy

答えて

0

文頭にあるトークン{は、オブジェクトリテラルの開始を意味する場合もあれば、文ブロックの開始を意味する場合もあります。 JavaScriptは後者の文ブロックであるとみなします。

したがって

{} + "" 

起因単項+オペレータのセマンティクスに0として解釈される式+ ""、続いてちょうど空文ブロックです。

{}であり、文頭にはであるため、曖昧さのない(空の)オブジェクトリテラルです。

+0

大統領を選出してください。私は、JavaScriptの「ワット」に関する話をする人は、すべてのことを完全に説明しなければならないという法律を作ります。 – Pointy

+2

"ワット"の質問を投稿した人をすぐに禁止すると、私は大統領を選ぶでしょう。 –