JavaScript で (a== 1 && a ==2 && a==3) は True になれるでしょうか?
この不可解なインタビューこの質問は、JavaScript の等価演算子 (==) の理解を問うものです。質問は、式 (a== 1 && a ==2 && a==3) を true と評価させることが可能かどうかを尋ねます。
a が 3 に等しくないため、一見すると不可能に思えます。異なる値を同時に。ただし、JavaScript の == 演算子の柔軟な性質を利用する巧妙なトリックがあります。
JavaScript では、== は型強制を実行するため、予期しない値の比較が可能になります。カスタム toString() または valueOf() 関数を使用してオブジェクトを定義すると、オブジェクトを数値と比較するときに返される値を操作できます。
たとえば、次のコードを考えてみましょう:
<code class="javascript">const a = { i: 1, toString: function () { return a.i++; } }; if(a == 1 && a == 2 && a == 3) { console.log('Hello World!'); }</code>
ここで、オブジェクト a には、1 に初期化されたプロパティ i があります。その toString() 関数は、i をインクリメントしてその値を返すように定義されており、比較するたびにオブジェクトの表現が事実上変更されます。
a が最初のとき1 と比較すると、i は 2 に増分されます。2 番目の比較では、i は再び 3 に増分され、等価条件が満たされます。最後に、3 回目の比較では、i は 4 に増分されますが、型強制により 3 に戻され、一致します。
したがって、JavaScript の柔軟な等価演算子を利用し、カスタム オブジェクトを定義することで、確かに、式 (a== 1 && a ==2 && a==3) を満たすことができ、true と評価されます。
以上がJavaScript では (a == 1 && a == 2 && a == 3) が True になることはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。