ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の `==` 演算子は、矛盾した条件でも真の評価を作成できますか?

JavaScript の `==` 演算子は、矛盾した条件でも真の評価を作成できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-01 11:28:02518ブラウズ

Can JavaScript's `==` Operator Create True Evaluations with Contradictory Conditions?

矛盾する条件で論理交差は True と評価できますか?

有名なテクノロジー企業が提起した興味深い面接の質問で、次のような質問が生じます。 JavaScript で式 (a == 1 && a == 2 && a == 3) が true と評価されることはありますか?

最初は、一見矛盾した条件の性質を考えると、これは信じられないように思えるかもしれません。しかし、JavaScript の等価演算子 (==) の複雑さを深く掘り下げることで、この謎を解く道が見えてきます。

JavaScript の等価演算子は、厳密に等しいもの (===) とは異なり、型強制を自動的に実行します。比較のために値を共通の型に変換します。これにより、特にカスタマイズされた toString (または valueOf) 関数を使用したオブジェクトの操作への扉が開き、動的な値の生成が可能になります。

次の例を考えてみましょう。

const a = {
  i: 1,
  toString: function () {
    return a.i++;
  }
}

このカスタムを使用した場合toString 関数では、a が暗黙的に文字列に強制されるたびに (ログ記録などのために)、a の内部 i 値が増加します。これにより、次の 3 つの等価条件をすべて満たすメカニズムが提供されます。

a == 1 // true (initially i = 1)
a == 2 // true (after toString call, i = 2)
a == 3 // true (after second toString call, i = 3)

したがって、オブジェクトの動的動作と == の暗黙的な型変換を活用することで、式 (a == 1 &&) が可能になります。 a == 2 && a == 3) JavaScript で true と評価されます。

以上がJavaScript の `==` 演算子は、矛盾した条件でも真の評価を作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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