2011-12-06 13 views
0

どうすればこのようなことが起こりますか? FirebugのでJavaScriptでIF/THEN文を書く方法がわかりませんか?

var X = db.getItem('ShowDeleted'); 
console.log(X); 
if (X) { 
    console.log(1); 
} else { 
    console.log(2); 
} 

、私は取得しています:

true 
1 
false 
1 

私は問題のスニペットを火災など。

編集:dbを使用していることをお詫び申し上げます。私の例では。 db = localStorage。

+3

として設定されたときにコードに基づいて、あなたの奇妙な行動を表示し、それが起こる_can't_。あなたが提供したものには4つの 'console.log'呼び出しさえありません。 –

+1

あなたの変数* x *のタイプは? – MilkyWayJoe

+3

これは2回実行されているようです。あなたの構文は正しいです。 –

答えて

1

ghikが指摘したように、Xの値が文字列として返されている可能性があります。 Hereはブール値として設定されたときに正しく動作jsfiddleスクリプトで、あなたが示されている文字列

//boolean version 
var X =true; 
console.log(X); 
if (X) { 
    console.log(1); 
} else { 
    console.log(2); 
} 
var X =false; 
console.log(X); 
if (X) { 
    console.log(1); 
} else { 
    console.log(2); 
} 
//outputs 
true 
1 
false 
2 


//String version 
var X ='true'; 
console.log(X); 
if (X) { 
    console.log(1); 
} else { 
    console.log(2); 
} 
var X ='false'; 
console.log(X); 
if (X) { 
    console.log(1); 
} else { 
    console.log(2); 
} 
//outputs 
true 
1 
false 
1 
+0

db = localStorage。私にこれを見せてくれてありがとう! –

2

私が想像していることは(db.getItemが返すタイプを知らないと実際には分かりませんが)、Xはいくつかの非ブール値になります。変数が0以外の値であるため、ifステートメントは常にtrueと評価されます。それは、文字列"false"を返します(または、本当にそのことについては任意のオブジェクト)は、常にif枝を次の次の場合には、ある、ないelse

if("false"){ 
    //do something 
} else { 
    //do something else 
} 
あなたは、あなたが実際にブール値を評価していることを確認する必要があり

、他の値ではありません。

関連する問題