変数がnullでないかどうかを確認するにはどうすればよいですか?


回答:


399

それらは同等ではありません。1つ目は、ifステートメントmyVar真の場合(つまりtrue、条件付きで評価される場合)に続くブロックを実行し、2つ目は、myVarが以外の値の場合にブロックを実行しますnull

JavaScriptで真実でない唯一の値は次のとおりです(別名偽の値):

  • null
  • undefined
  • 0
  • "" (空の文字列)
  • false
  • NaN

69

変数がNULLでないかどうかをテストする方法は次のとおりです。

if (myVar !== null) {...}

myVarがnullでない場合、ブロックが実行されます。myVarが未定義、false、0またはNaNその他の場合は、ブロックが実行されます。


1
不思議に思う人のために...これは空の文字列("")や未定義のチェックはしません。参考として私のフィドルを参照してください:jsfiddle.net/b0tm7yaf
Barrosy

47

この投稿を読んでくださいhttp : //enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

JavaScriptには一般的にいくつかの良いヒントがありますが、ここで言及していることの1つは、nullをチェックする必要があることです。

if(myvar) { }

また、あなたが気付かないかもしれない「偽り」と考えられるものについても触れています。


33
このチェックは実際には安全ではありません。myvarが0、false、またはその他の偽の値の場合、テストは失敗します(nullでないことを確認するだけの場合)。したがって、変数が別の偽の値を持つことができない場合にのみ、これを使用してnullでないことを確認してください。
Werzi2001、2013

2
リンクは機能しなくなります。ここに投稿のように見えるもののコピーを見つけました:appendto.com/2010/10/… エリヤの投稿(およびサンプルコード)は彼が著者であることを示唆しているが、彼はそこの著者としてリストされていないため、奇妙です...
thepaulpage

2
そのサイトはもう存在していないようです。外部リンクだけでなく、投稿自体に情報を含めることができれば役に立ちます。
前任者2016年

値は存在するが0(ゼロ)の場合、これは機能しません
zmechanic

15
  • 内のコードはif(myVar) { code }myVarが以下に等しい場合にのみ実行されません。false, 0, "", null, undefined, NaNまたは、変数を定義したことがない場合myVar(さらに、コードが実行を停止し、例外をスローします)。
  • 内のコードはif(myVar !== null) {code}myVarが等しいnullか定義されていない場合にのみ実行されません(例外がスローされます)。

ここにすべてがあります(src

もし

ここに画像の説明を入力してください

==(その否定!=

ここに画像の説明を入力してください

===(その否定!==

ここに画像の説明を入力してください


9

私が今遭遇した別の可能なシナリオがあります。

私はajax呼び出しを行い、データを文字列形式でnullとして返しました。私はこのようにそれをチェックしなければなりませんでした:

if(value != 'null'){}

つまり、nullは実際にはnullではなく、「null」を読み取る文字列でした。

編集:私はこれを行うべき方法としてこれを販売していないことを理解する必要があります。これが実行できる唯一の方法であるシナリオがありました。なぜだかわかりません...多分バックエンドを書いた人がデータを正しく提示していなかったかもしれませんが、それにもかかわらず、これは現実です。これが正しくないことを理解している誰かがこれに反対票を投じ、実際に役立つ誰かが反対票を投じているのを見るのはイライラします。


null文字列と比較するのではなく、値を解析します。
Bergi

1
この答えは、あなたがそれの適用を理解しているかどうかにかかわらず、正当です。実際に機能したものを投稿することに反対票を投じられたことに感謝しません。触れる前に賛成票があったことに気づきましたか?それは本当のシナリオだからです。
Flat Cat

3
はい、それは間違った解決策だと思うので私は反対票を投じました。ajax呼び出しの場合はvalue = JSON.parse(value)、シンプルで適切なvalue != nullテストを実行してから使用することをお勧めします
Bergi

2
どうやらあなたは理解していません。あなたはそう思うと思いますが、そうではありません。
Flat Cat

4
私はそれが実用的な解決策であったことを理解しています。しかし、私はそれが良いアドバイスだとは思わないので、私の反対票を尊重してください。
Bergi

1

もしmyVarnullは、ブロックが、他の単位を実行しない場合は、それが実行されます、その後です。

if (myVar != null) {...}


文字列'null'ではなく、特別な値null
Micah Walter、

1

それが定義されていない場合でも、準備する方が良い場合があります。このために私はtypeofを使用しました

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}

-4

ここにリストする2つの条件ステートメントは、お互いより優れているわけではありません。使い方は状況によります。ところで、2番目の例では、タイプミスがあります。感嘆符の後に等号が1つだけあるはずです。

最初の例では、myVarの値がtrue かどうかを判断し、{...}内のコードを実行します

2番目の例は、myVarがnullに等しくないかどうかを評価し、そのケースがtrueの場合、{...}内でコードを実行します

より多くのテクニックについては、条件付きステートメントを検討することをお勧めします。それらに慣れたら、いつ必要かを決めることができます。


12
これはおそらく、2番目の例ではタイプミスではありません。その2番目=は重要であり、質問に大きな違いをもたらします。おそらくJavaScript に!==and ===演算子が存在することに気付いていませんか?
Tim Down

1
ご指摘いただきありがとうございます。私はすぐにタイプミスだと思ったのですが、しばらく見ていなかったことを忘れていました。
THE DOCTOR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.