次のように、未定義のパラメータなどをチェックするJavaScriptコードをよく見ます。
if (typeof input !== "undefined") {
// do stuff
}
冗長性は言うまでもなく、型の検索と文字列の比較の両方が含まれるため、これは一種の無駄に見えます。undefined
名前を変更できるので必要です。
私の質問は次のとおり
です。そのコードはこのアプローチよりも優れています:
if (null != input) {
// do stuff
}
私の知る限り、を再定義することはできないnull
ため、予期せず壊れることはありません。そして、!=
演算子の型強制のため、これはundefined
andとnull
...の両方をチェックします。これは、多くの場合、正確に必要なものです(たとえば、オプションの関数パラメーター)。
しかし、このフォームは広く普及していないようであり、JSLintが邪悪な!=
演算子を使用していることを怒鳴りつけます。
なぜこれが悪いスタイルと考えられているのですか?
if (null != input)
英語の話者にとっては「ヨーダスピーク」だけです(1人は私は.... uuammmmmです)。したがって、それらが同じものに等しい場合、それは実際には単なるセマンティクスです。私見では。