我是javascript的新手,我遇到了一个看似简单的if / else语句的问题。
任何人都可以让我知道为什么以下不能正常工作(我拉我的头发)
var is_expanded = false;
if (is_expanded==false) {
alert('no');
is_expanded = true;
} else {
alert('yes');
}
我总是得到'不'警告(我从未接触过其他部分)。
欢呼任何帮助。
答案 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