==
オペレーターは本当に面白いです。通常、思ったように動作しません。
これにより、氷山の先端の下で何が起こっているのかを正確に調査することになりました。MDNによると、次のようになります。
2つのオペランドが同じタイプでない場合、JavaScriptはオペランドを変換してから、厳密な比較を適用します。いずれかのオペランドが数値またはブール値の場合、可能であれば、オペランドは数値に変換されます。それ以外の場合、いずれかのオペランドが文字列の場合、可能であれば、もう一方のオペランドは文字列に変換されます。両方のオペランドがオブジェクトの場合、JavaScriptは、オペランドがメモリ内の同じオブジェクトを参照するときに等しい内部参照を比較します。
では、なぜ"undefined" == undefined
真と評価されないのでしょうか。
この説明に従って、undefined
に変換してからtrueを返す必要はありませんか?"undefined"