次のように、未定義のパラメータなどをチェックする JavaScript コードをよく見かけます。
if (typeof input !== "undefined") {
// do stuff
}
これは、冗長であることは言うまでもなく、型の検索と文字列の比較の両方を伴うため、無駄が多いように思えます。undefined
ただし、名前を変更できるため必要です。
私の質問は、
そのコードがこのアプローチよりも優れている点は何ですか?
if (null != input) {
// do stuff
}
私の知る限り、 を再定義することはできないのでnull
、予期せず動作が停止することはありません。また、演算子の型強制により!=
、undefined
とnull
... の両方がチェックされます。これは、多くの場合、まさに必要なことです (オプションの関数パラメータなど)。
しかし、この形式は広く普及しているようには見えず、JSLint が evil 演算子を使用していると警告する原因にもなります!=
。
なぜこれが悪いスタイルだと考えられるのでしょうか?
ベストアンサー1
typeof
識別子が以前に宣言されていないことを許可するため、より安全です。
if(typeof neverDeclared === "undefined") // no errors
if(neverDeclared === null) // throws ReferenceError: neverDeclared is not defined