2010-12-05 13 views

答えて

271

は、彼らは同じではありません。最初のブロックはmyVar真偽(つまり条件付きでtrueと評価された場合)のif文の次のブロックを実行し、myVarnull以外の値の場合は2番目のブロックが実行されます。

  • null
  • undefined
  • 0
  • ""(空の文字列)
  • :JavaScriptでtruthyではありません

    唯一の値は、以下の(別名falsy値)です

  • false
  • NaN
40

この記事で読んだことがある:それは、一般的にはJavaScriptのためのいくつかの素晴らしいヒントを持っていますが、それは言及しない一つのことは、あなたのようなヌルをチェックしなければならないことであるhttp://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

を:

if(myvar) { } 

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

+1

ジョナサン叫ぶしてくれてありがとう;) –

+0

おかげでチームメイト - シンプル& –

+25

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

-1

ここに記載されている2つの条件文はお互いに優れているわけではありません。使用状況は状況によって異なります。 2番目の例では、入力ミスがあります。感嘆符の後には、等号が1つだけあります。

myVarをの値がmyVarをがnull等しく、その場合にない場合に第2の例では、評価真であると{...}

の内部コードを実行する場合は第1の例では、決定します場合によってはの内部でコードを実行します。{...}

さらなる手法については、条件文を参照することをお勧めします。あなたがそれらに慣れたら、いつそれらを必要とするかを決めることができます。ここで

+9

おそらく2番目の例では誤植ではありません。 2番目の '='は重要であり、質問に大きな違いをもたらします。 JavaScriptで '!=='と '==='演算子の存在を認識していないのでしょうか? –

+1

それを指摘してくれてありがとう。私はすぐにタイプミスだと思ったが、今は私が一度も見たことがなく、忘れてしまったことを思い出している。 –

27

は、変数がNULLでない場合は、テストする方法です。

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

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

4

私はちょうど出くわした別のシナリオがあります。

私はajax呼び出しを行い、データを文字列形式でヌルとして戻しました。

if(value != 'null'){} 

したがって、nullは実際にはnullではなく、「null」を読み取る文字列でした。

EDIT:私はそれが行われるべき方法として、これを販売していないよということを理解すべきです。私は、これが実行できる唯一の方法であるシナリオを持っていました。どうして...バックエンドを書いた人が間違ってデータを提示しているのかもしれないが、これは実際の人生だ。それが実際に役立つ誰かによって投票され、それが正当ではないと理解している人によって投票されたことを見ると、イライラしています。

+0

むしろ、 'null'文字列と比較するよりもあなたの値を解析してください。 – Bergi

+1

この回答は、その用途を理解しているかどうかにかかわらず正当です。私は実際に働いていたものを投稿するために落札されたことに感謝しません。あなたがそれに触れる前にそれがアップヴォートを持っていたことにお気づきましたか?実際のシナリオであるからです。 – Ben

+1

はい、私はそれが間違った解決策だと思ったので、私は下降しました。 ajax呼び出しの場合、 'value = JSON.parse(value)'をしてから、単純で適切な 'value!= null'テストを使うのが良いでしょう。 – Bergi

1

myVarがヌルの場合、ブロックが実行されない場合は実行されません。

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

関連する問題