重複の可能性:
CodeMash 2012 の「Wat」トークで言及されたこれらの奇妙な JavaScript 動作の説明は何ですか?
結果を返すこれらがjavascriptでどのように異なるかを誰かが私に説明してもらえますか:
› {} + []
» 0
› [] + {}
» "[object Object]"
重複の可能性:
CodeMash 2012 の「Wat」トークで言及されたこれらの奇妙な JavaScript 動作の説明は何ですか?
結果を返すこれらがjavascriptでどのように異なるかを誰かが私に説明してもらえますか:
› {} + []
» 0
› [] + {}
» "[object Object]"
これは{}
、コード内の がオブジェクト リテラルではなく、空のブロックであるためです。
次のように解析されます。
{}; // 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 でこの並べ替えの質問を検索するより良い方法を知っている場合、またはそのような重複へのリンクが便利な場合..