「In」演算子の異常: 配列に「0」が含まれていない場合にテストが「0」に対して True を返す理由
「in」 JavaScript の " 演算子は、オブジェクトにプロパティが存在するか、配列に要素が存在するかを確認する方法を提供します。配列内の要素をテストする場合、配列にその正確な値を持つ要素が含まれている場合にのみ、「in」演算子が true を返すことを期待する場合があります。ただし、配列内の "0" をテストする場合、"in" 演算子は予期せぬ動作をするように見えます。
次の例を考えてみましょう。
<code class="javascript">var x = [1, 2]; 0 in x;</code>
これは、たとえ true を返します。配列 x には値「0」が含まれていません。この一見逆説的な動作の理由は、「in」演算子の性質にあります。
「in」演算子を理解する
「in」演算子は、プロパティまたは要素がオブジェクトまたは配列に存在します。ただし、演算子は必ずしも特定の値の存在ではなく、プロパティまたは要素の存在をチェックすることを強調することが重要です。
配列の場合、「in」演算子は特定のインデックスが存在するかどうかを検証します。特定の値を持つ要素がそのインデックスに存在する場合ではなく、配列内に存在します。これは、配列内の "0" をテストすると、その要素の値に関係なく、インデックス 0 に要素が存在するかどうかがチェックされることを意味します。
例への応用
この例の配列 x では、「0」演算子は要素がインデックス 0 に存在するかどうかをテストします。JavaScript では配列のインデックスがゼロであるため、インデックス 0 は 2 つの要素を持つ配列の有効なインデックスです。したがって、配列内に値「0」の要素が存在しない場合でも、「in」演算子は true を返します。
重要なポイント
" オペレータの動作は、その目的を誤解すると混乱を招く可能性があります。特定の値の存在をテストするのではなく、特定のインデックスまたはキーに要素またはプロパティが存在するかどうかをテストします。これにより、インデックスやキーの位置として特別な意味を持つ「0」などの値をチェックするときに、予期しない結果が生じる可能性があります。
以上がJavaScript で「0 in [1, 2]」が True を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。