JavaScript での予期しない文字列の連結
JavaScript では、独特の式 [[]][ []] [ []] により、驚くべきことに、文字列「10」。この動作の背後にある複雑なプロセスを理解するには、個々のコンポーネントを分解する必要があります:
++[[]] + [+[]]
最初のコンポーネントの公開: [[]]
プレフィックス インクリメント演算子は、そのコンポーネントをインクリメントします。オペランドを 1 つ増やし、インクリメントされた結果を返します。この場合、オペランドは [[]] で、空の配列 ([]) として評価されます。配列のインクリメントは論理的ではありませんが、JavaScript では演算子を使用して配列を数値に変換することでそのような場合に対応します。
変換について: [[]]
演算子は、配列に適用されると、それを数値に変換しようとします。ただし、空の配列は false と評価され、数値 0 に強制されます。したがって、[[]] は 0、または単に 0 と等価になります。
2 番目のコンポーネント: [ []]
同じロジックに従って、[ []] も空の配列を 0 に変換します。
結合: (0 1) [0]
インクリメントされた式は 1 (0 1) となり、[0] に加算されます。 JavaScript では、配列の要素をカンマで結合することで、配列を文字列に強制できます。したがって、[0] は「0」と同等です (配列を 1 つの要素で結合すると、その要素自体になります)。
数値を文字列に変換する:
式は 1 "0" になり、JavaScript はこれを文字列として連結しようとします。結果は「10」です。
型強制の詳細な分析:
一見複雑な外観にもかかわらず、この式は JavaScript 演算子の優先規則に従い、 よりも高い優先順位を持ちます。このような式を効果的にデバッグするには、これらの優先ルールを理解することが重要です。
以上がJavaScript で [[]][ []] [ []] の結果が文字列「10」になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。