我得到了嵌套的if循环(与使用&&运算符相同),但这里的代码如何知道在没有条件的情况下执行哪些条件,而只使用背靠背的else语句?其中一个位于嵌套的if语句中。我很清楚这就是为什么它会这样工作,我只是不知道怎么做。此外,我知道如何用几种更可读的方式来测试多种条件。请在这里解释一下这个代码发生了什么。它如何知道输出"你太老了"或"你太年轻了"
var age = prompt("Please enter Your age here :");
var min_age=18;
var max_age=40;
if(age>=min_age){
if(age<=max_age){
console.log("You meet the requirements for this competition");
}else{
console.log("You are too old");
}
}else{
console.log("You are too young");
}
if-then-else模糊性在很长一段时间内都是已知的。所有的语言都通过定义一个else
将与第一个感知的if
相匹配来解决这个问题。因此:
if (a)
if (b)
x = 1;
else
x = 2;
解析为:
if (a) {
if (b) {
x = 1;
}
else {
x = 2;
}
}
编辑由Nisar重新编辑:
if
语句定义为:
if (<condition>) <statement> [else <statement>]
这意味着上述<statement>
也可以是if
语句。例如:
if (<condition>) if (<condition>) [else <statement>] [else <statement>]
由于每个else
部分都是可选的,编译器无法知道何时看到它所属的if
的else
部分。为了解决语言定义else
总是与前面的第一个if
匹配的问题。
括号{}
设置了限制。
试着用伪代码思考,超越字符,思考正在发生的事情。
按顺序读取:
If you are old enough
If your are not too old
'You meet the requirements for this competition'
OTHERWISE
'You are too old'
END
OTHERWISE
'You are too young'
END
注意缩进如何帮助查看条件的限制。每个缩进的部分都可以分开。
首先,让我们缩进您的代码。
var age = prompt("Please enter Your age here :");
var min_age = 18;
var max_age = 40;
if (age >= min_age)
{
if (age <= max_age)
{
console.log("You meet the requirements for this competition");
}
else
{
console.log("You are too old");
}
}
else
{
console.log("You are too young");
}
启动..
var age = prompt("Please enter Your age here :");
假设您在提示框中输入21,则age=21
我们初始化
var min_age = 18;
var max_age = 40;
现在让我们来看第一个if
条件。
if (age >= min_age)
如果您替换这些值,这将转化为
if (21 >= 18)
这是真的,因此我们进入if块,而不是其他块下一行是
if (age <= max_age)
这转化为
if (21 <= 40)
考虑到这也是事实,我们打印您符合本次比赛的要求。
最重要的一点是,缩进代码,剩下的就变得非常简单了
只有3个选项
- 太年轻了
- 正确年龄
- 太老了
第一次检查-这个人足够大了吗?
if(age>=min_age)
第二次检查——这个人太老了吗?
if(age<=max_age)
如果状态为FALSE
:,则在此之后剩下的唯一可能选项
- 太老了