typeof !== "undefined" と != null 質問する

typeof !==

次のように、未定義のパラメータなどをチェックする JavaScript コードをよく見かけます。

if (typeof input !== "undefined") {
    // do stuff
}

これは、冗長であることは言うまでもなく、型の検索と文字列の比較の両方を伴うため、無駄が多いように思えます。undefinedただし、名前を変更できるため必要です。

私の質問は、
そのコードがこのアプローチよりも優れている点は何ですか?

if (null != input) {
    // do stuff
}

私の知る限り、 を再定義することはできないのでnull、予期せず動作が停止することはありません。また、演算子の型強制により!=undefinednull... の両方がチェックされます。これは、多くの場合、まさに必要なことです (オプションの関数パラメータなど)。

しかし、この形式は広く普及しているようには見えず、JSLint が evil 演算子を使用していると警告する原因にもなります!=

なぜこれが悪いスタイルだと考えられるのでしょうか?

ベストアンサー1

typeof識別子が以前に宣言されていないことを許可するため、より安全です。

if(typeof neverDeclared === "undefined") // no errors

if(neverDeclared === null) // throws ReferenceError: neverDeclared is not defined

おすすめ記事