简单的JavaScript如果不工作

时间:2011-04-13 12:00:53

标签: javascript if-statement

我是javascript的新手,我遇到了一个看似简单的if / else语句的问题。

任何人都可以让我知道为什么以下不能正常工作(我拉我的头发)

var is_expanded = false;
if (is_expanded==false) {
    alert('no');
    is_expanded = true;
} else {
    alert('yes');
}

我总是得到'不'警告(我从未接触过其他部分)。

欢呼任何帮助。

5 个答案:

答案 0 :(得分:9)

这是按设计工作的。

当您说if时,会检查条件。然后进入正确的块,在这种情况下是警告“否”的块。

执行块后,不会重新评估条件。这不是if语句如何工作,而不是我所知道的任何语言。

根据您的目的,还有其他可以帮助您的模式和结构,例如while循环。也许展示你需要的真实用例。

答案 1 :(得分:2)

这是因为is_expanded始终等于false,因为您已在if语句之前将其设置为false

除非is_expanded在if语句之前等于true,否则不会触发。

答案 2 :(得分:1)

这是正常的。您已将变量is_expanded设置为false,因此在if语句中,您始终输入alert('no');部分。将变量设置为true后,不再执行任何if语句。

答案 3 :(得分:1)

var is_expanded = false;
if (is_expanded==false) {
    alert('no');
    is_expanded = true;
} else {
    alert('yes');
}

恭喜!你的代码工作正常,所以不要拔头发。

IF / ELSE的本质是每次传递只有一个。因此,您的代码会检查is_expanded是否为FALSE。如果它是假的,它将运行IF部分。如果没有,它将运行ELSE部分。

就像英语一样读它。

If something, do this. Otherwise, do something else

即使您在其中一个块中更改了变量的值,也无关紧要,因为一旦检查了块,它就会继续运行。

答案 4 :(得分:1)

您之前的代码行说var is_expanded = false; 这意味着if (is_expanded==false)将始终评估为true

这正是你得到的输出。你有什么期望?

下次调用同一方法时,由于您的第一行代码,is_expanded的值会再次重置为false。然后它会再次提醒no