[解決済み] JavaScriptで未定義またはNULL変数をチェックする方法は?
2022-03-17 14:42:37
質問
私たちのJavaScriptコードでは、以下のコードパターンが頻繁に使用されています。
if (typeof(some_variable) != 'undefined' && some_variable != null)
{
// Do something with some_variable
}
同じ効果を持つ、より冗長でないチェック方法はありますか?
いくつかのフォーラムや文献によると、単純に以下のように言っても同じ効果があるようです。
if (some_variable)
{
// Do something with some_variable
}
残念ながら
ファイアバグ
は、このようなステートメントを実行時にエラーとして評価します。
some_variable
が未定義である場合、最初のものは問題なく使用できます。これはFirebugの(好ましくない)動作に過ぎないのでしょうか、それともこの2つの方法には本当に何か違いがあるのでしょうか?
解決方法は?
ケースを区別する必要があります。
-
変数には
undefined
または 未定義 . 以外のコンテキストで宣言されていない変数にアクセスすると、エラーが発生します。typeof
.
if(typeof someUndeclaredVar == whatever) // works
if(someUndeclaredVar) // throws error
宣言されているが初期化されていない変数は
undefined
.
let foo;
if (foo) //evaluates to false because foo === undefined
-
未定義 プロパティ のように
someExistingObj.someUndefProperty
. 未定義のプロパティはエラーにならず、単にundefined
と評価され、ブーリアン値に変換されます。false
. ですから、もしあなたが0
とfalse
を使用しています。if(obj.undefProp)
はOKです。この事実をもとにした慣用句があります。value = obj.prop || defaultValue
というのは、もし
obj
は、プロパティprop
に割り当てる。value
そうでない場合は、デフォルト値defautValue
となります。この動作は混乱を招くと考える人もおり、見つけにくいエラーにつながると主張して
in
演算子の代わりにvalue = ('prop' in obj) ? obj.prop : defaultValue
関連
-
JavaScriptのクロージャの説明
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] JavaScriptで変数が存在するか(定義されているか/初期化されているか)をチェックする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
jsを使った簡単な照明スイッチのコード
-
vueディレクティブv-bindの使用と注意点
-
vue ディレクティブ v-html と v-text
-
vueが定義するプライベートフィルタと基本的な使い方
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
Vueでルートネスティングを実装する例
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります
-
フロントエンド非同期(アシンク)ソリューション(全ソリューション)
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み】未定義のオブジェクトプロパティを検出する