[解決済み] typeof !== "undefined" vs. != null
2022-03-19 01:01:57
質問
このように未定義のパラメータなどをチェックするJavaScriptのコードをよく見かけます。
if (typeof input !== "undefined") {
// do stuff
}
型検索と文字列比較の両方を行うので、冗長であることは言うまでもないが、ちょっと無駄な気がする。これが必要なのは
undefined
は名前を変えることができるのですが。
私の疑問は
そのコードは、このアプローチよりもどのように優れているのでしょうか。
if (null != input) {
// do stuff
}
私の知る限りでは、再定義することはできません。
null
ということで、予期せず壊れるということはありません。また、型強制のため
!=
演算子の両方をチェックします。
undefined
と
null
...これは、しばしば正確にあなたが望むものです (例えば、オプションの関数パラメータ)。
しかし、この形式はあまり普及していないようで、JSLint からは「邪悪な
!=
演算子を使用します。
なぜこれが悪いスタイルと言われるのか?
解決方法は?
typeof
は、識別子が以前に宣言されたことがないことを許容するので、より安全です。
if(typeof neverDeclared === "undefined") // no errors
if(neverDeclared === null) // throws ReferenceError: neverDeclared is not defined
関連
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] JavaScriptに「NULL合体」演算子はありますか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
-
[解決済み] JavaScriptのNullとundefinedのチェックと==と===の違いについて
-
[解決済み] 変数 === undefined vs. typeof 変数 === "undefined"
-
[解決済み】未定義のオブジェクトプロパティを検出する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
Vue+ElementUIによる大規模なフォームの処理例
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
Vueのフィルタの説明
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
[解決済み】React-Redux: アクションはプレーンオブジェクトでなければならない。非同期アクションにはカスタムミドルウェアを使用する
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。