我不明白如何在JavaScript中编写IF / THEN语句?

时间:2011-12-06 17:47:38

标签: javascript

这怎么可能发生?

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

在Firebug中,我得到了:

true
1
false
1

当我解开有问题的片段时。

编辑:我为使用db道歉。在我的例子中。分贝= localStorage的。

2 个答案:

答案 0 :(得分:2)

我想象的事情发生了(虽然在不知道db.getItem返回的类型的情况下真的无法判断)X最终会成为一些非布尔值。然后,if语句始终求值为true,因为该变量是0以外的某个值。也就是说,如果它返回一个字符串"false"(或实际上是任何对象),则以下始终跟在if分支之后,而不是else

if("false"){
  //do something
} else {
  //do something else
}

您需要确保实际上是在评估布尔值,而不是其他值。

答案 1 :(得分: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