7

重複の可能性:
CodeMash 2012 の「Wat」トークで言及されたこれらの奇妙な JavaScript 動作の説明は何ですか?

結果を返すこれらがjavascriptでどのように異なるかを誰かが私に説明してもらえますか:

› {} + []
» 0
› [] + {}
» "[object Object]"
4

1 に答える 1

7

これは{}、コード内の がオブジェクト リテラルではなく、空のブロックであるためです。

次のように解析されます。

{};   // empty block
+ []; // this result is shown in the console

と比較する({}) + []と、と同じ結果が得られ[] + {}ます。この場合、括弧は{}を「式のコンテキストで」処理/解析することを強制します。

(式またはブロックとして?)のこの特定の二重性質について、SO には多くの重複あります{}が、それらを見つけるのはやや難しい場合があります..


メタでhttps://meta.stackexchange.com/questions/83911/how-do-i-search-stackoverflow-for-at-keywords-like-private-or-synthesizeを見つけ、Symbolhound を使用して「最も近い」重複を見つけましたこのような質問(「JSONを評価する」ときに括弧を追加する必要性に関連する)またはこれ(「{} == false」のような構造の使用は構文エラーです)のような質問を解決することができました。

誰かが SO でこの並べ替えの質問を検索するより良い方法を知っている場合、またはそのような重複へのリンクが便利な場合..

于 2012-08-17T04:47:51.400 に答える