[解決済み] JavaScriptで "undefined "をチェックするにはどうすればよいですか?[重複しています]
2022-03-14 02:59:17
質問
JavaScriptで変数が未定義かどうかをテストする最も適切な方法は何でしょうか?
いくつかの方法が考えられますが、どのような方法が考えられますか?
if (window.myVariable)
または
if (typeof(myVariable) != "undefined")
または
if (myVariable) // This throws an error if undefined. Should this be in Try/Catch?
解決方法は?
もし、ある変数がその値に関係なく宣言されているかどうかを調べたいのであれば、その変数に対応した
in
演算子は最も安全な方法です。この例で考えてみましょう。
// global scope
var theFu; // theFu has been declared, but its value is undefined
typeof theFu; // "undefined"
しかし、変数やプロパティは宣言されていても初期化されていないだけなので、場合によっては意図した結果にならないかもしれません。その場合は
in
演算子を使えば、より確実なチェックができます。
"theFu" in window; // true
"theFoo" in window; // false
変数が宣言されていないのか、値があるのかを知りたい場合
undefined
を使用します。
typeof
演算子は文字列を返すことが保証されています。
if (typeof myVar !== 'undefined')
に対して直接比較する。
undefined
は面倒なので
undefined
は上書きされる可能性があります。
window.undefined = "foo";
"foo" == undefined // true
@CMS さんのご指摘の通り、ECMAScript 第 5 版でパッチが適用されており
undefined
は書き込み不可です。
if (window.myVar)
は、これらの偽の値も含んでしまうので、あまり堅牢ではありません。
虚偽 0 "" NaN ヌル 未定義
3つ目のケース - を指摘してくれた @CMS に感謝します。
if (myVariable)
は、2つのケースでエラーを投げることもできます。ひとつは、変数が定義されていない場合です。
ReferenceError
.
// abc was never declared.
if (abc) {
// ReferenceError: abc is not defined
}
もう一つは、変数は定義されているが、ゲッター関数があり、それを呼び出すとエラーになる場合です。例えば
// or it's a property that can throw an error
Object.defineProperty(window, "myVariable", {
get: function() { throw new Error("W00t?"); },
set: undefined
});
if (myVariable) {
// Error: W00t?
}
関連
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] JavaScriptで変数が配列であるかどうかを確認する方法は?
-
[解決済み】JavaScriptで10進数を検証する - IsNumeric()
最新
-
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+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
Vueのイベント処理とイベントモディファイアの解説
-
Vueの「データを聴く」原則を解説
-
Vueのフィルタの説明
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】リクエストに失敗していないのに、「TypeError: failed to fetch」が表示される。
-
JavaScriptのgetElementById()メソッド入門
-
[解決済み】未定義のオブジェクトプロパティを検出する
-
[解決済み】JavaScriptで定義されていない変数を確認する方法