ホームページ > 記事 > ウェブフロントエンド > JavaScript で [[]][ []] [ []] が「10」を返すのはなぜですか?
[[]][ []] [ []] の戻り値の背後にある謎を明らかにする
JavaScript の領域では、謎の式 [[]][ []] [ []] は、一見無意味な戻り値「10」で多くの人を当惑させます。 JavaScript の評価プロセスを深く掘り下げて、このパズルを解読する旅に乗り出します。
最初に、式を分解してみましょう:
++[[]][+[]] + [+[]]
Expanding [[]] [ []]
JavaScript では、式 [] は次のように評価されます。 0。これは、オペランドを数値に変換しようとし、空の配列が文字列に強制され、その後数値に変換されて 0 が得られるためです。
[] を同等のものに置き換えると、次のようになります。
++[[]][0] + [+[]]
[[]][0] を評価しています
演算子はオペランドを 1 つインクリメントするため、[[]][0] は ([[]][0]) 1 と同等になります。 [[]][0] は空の配列の最初の要素を取得するため、別の空の要素を返します。配列。したがって、([[]][0]) は [] と同等であり、結果が 0 になることがわかっています。
残りの式を単純化
さらに単純化すると、次のようになります。 :
1 + [+[]]
JavaScript の強制Magic
配列と数値の加算を処理する場合、JavaScript の強制ルールが適用されます。まず、配列が文字列 (「0」) に強制変換され、次に数値が文字列 (「1」) に強制変換されます。文字列連結の最終結果は次のとおりです。
console.log("1" + "0") // "10"
追加コンテキスト
以上がJavaScript で [[]][ []] [ []] が「10」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。