ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript で [[]][ []] [ []] が「10」を返すのはなぜですか?

JavaScript で [[]][ []] [ []] が「10」を返すのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-17 15:09:02831ブラウズ

Why does   [[]][ []] [ []] return

[[]][ []] [ []] の戻り値の背後にある謎を明らかにする

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"

追加コンテキスト

  • 式 [[]] は、文字列を強制する簡単な方法として理解できます。配列を数値 (0) に変換します。
  • [] 操作は JavaScript 仕様では明示的に定義されていませんが、これは、一連の強制ステップの結果です。
  • JavaScript の強制ルールは、特定のシナリオで予期しない動作を引き起こす可能性がありますが、値を別の型に変換する柔軟性を提供します。

以上がJavaScript で [[]][ []] [ []] が「10」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。