[解決済み] JavaScriptのNULLチェック
質問
次のようなコードに出会いました。
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
私はJavaScriptにやや慣れていませんが、ここで読んだ他の質問から、このコードはあまり意味をなさないという印象を受けました。
以外のコンテキストで未定義の変数にアクセスすると、エラーが発生します。typeof
.
更新しました。 上記の回答(の引用)は、誤解を招く可能性があります。次のように記述すべきです。 "未宣言の変数" ではなく "未定義の変数" .
による回答で、わかったことですが ライアン , メアリックス および ヌエルンホフ 関数に引数が与えられていない場合でも、引数のための変数は常に宣言されています。この事実は、以下のリストの最初の項目が誤りであることを証明するものでもあります。
私の理解では、以下のようなシナリオが想定されます。
-
この関数は引数なしで呼び出されたためdata
が未定義の変数になりdata != null
. -
この関数は、特に
null
(またはundefined
を引数にとります。data != null
はすでに内側のコードを保護し&& data !== undefined
は役に立たない。 -
この関数は、非NULLの引数で呼び出された場合、トリビアルに
data != null
とdata !== undefined
.
Q:私の理解は正しいのでしょうか?
Firefoxのコンソールで、以下を試してみました。
--
[15:31:31.057] false != null
[15:31:31.061] true
--
[15:31:37.985] false !== undefined
[15:31:37.989] true
--
[15:32:59.934] null != null
[15:32:59.937] false
--
[15:33:05.221] undefined != null
[15:33:05.225] false
--
[15:35:12.231] "" != null
[15:35:12.235] true
--
[15:35:19.214] "" !== undefined
[15:35:19.218] true
というケースが思いつきません。
data !== undefined
後
data != null
は、何か役に立つかもしれません。
解決方法は?
未定義変数」が値と異なる場合
undefined
.
未定義の変数です。
var a;
alert(b); // ReferenceError: b is not defined
値を持つ変数
undefined
:
var a;
alert(a); // Alerts “undefined”
関数が引数を取る場合、その引数はその値が
undefined
そのため、エラーになることはありません。あなたの言うとおり
!= null
に続いて
!== undefined
とはいえ、無駄なことですが。
関連
-
[解決済み】Javascript - ERR_CONTENT_LENGTH_MISMATCH
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み】最大呼び出しスタックサイズ超過エラーとその修正方法とは?
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】 \u003C とは何ですか?
-
[解決済み】module.exports "モジュールが定義されていません"
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]
-
[解決済み] JavaScriptで未定義またはNULL変数をチェックする方法は?