1. ホーム
  2. javascript

[解決済み] typeof !== "undefined" vs. != null

2022-03-19 01:01:57

質問

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

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

型検索と文字列比較の両方を行うので、冗長であることは言うまでもないが、ちょっと無駄な気がする。これが必要なのは undefined は名前を変えることができるのですが。

私の疑問は
そのコードは、このアプローチよりもどのように優れているのでしょうか。

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

私の知る限りでは、再定義することはできません。 null ということで、予期せず壊れるということはありません。また、型強制のため != 演算子の両方をチェックします。 undefinednull ...これは、しばしば正確にあなたが望むものです (例えば、オプションの関数パラメータ)。

しかし、この形式はあまり普及していないようで、JSLint からは「邪悪な != 演算子を使用します。

なぜこれが悪いスタイルと言われるのか?

解決方法は?

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

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

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