if和else语句处理的顺序是什么?

时间:2016-03-08 08:37:02

标签: javascript

我是编程新手,我的问题让我的问题出错了。我回答了#34;再见"。正确答案是#34;欢迎"。我很困惑,为什么它跳过else语句,当else不在任何一个if语句中时。我特别认为,否则意味着if语句是错误的。考虑这个问题的正确方法是什么?

将向用户显示什么?

var x = 1, y = 7;
var message = "Welcome";

if (x < 2) {
   if (y > 10) {
     message = "Hello";
   }
}
else {
   message = "Goodbye";
}
window.alert(message);

3 个答案:

答案 0 :(得分:3)

为了便于说明,您可以将程序绘制为图表,这样您就可以只打开并永不启动。然后应该清楚明白为什么答案是&#34;欢迎&#34;。

                      x = 1
                      y = 7
                message = "Welcome"
                        |
                        |
                    ( x < 2 )
                     /     \
                    /       \
                 true      false
                  /           \
                 /             \
           ( y > 10 )    message = "Goodbye"
            /      \
           /        \
        true       false
         /            \
        /              \
message = "Hello"    (nothing)

------------------------v--------------------
                        |
                        |
                  alert(message)

答案 1 :(得分:1)

由于x小于2,因此忽略else语句。由于对y变量的检查包含在外if块中,因此对外if没有影响。

var x = 1, y = 7;
var message = "Welcome";

if (x < 2) {               /* True (x is less than 2) */
   if (y > 10) {
     message = "Hello";    /* False (y isn't greater than 10) */
   }
}
else {                     /* False (x isn't greater than or equal to 2) */
   message = "Goodbye";
}

如果外部else结合了两个条件,输入if块,因为这将评估为false

if (x < 2 && y > 10)

答案 2 :(得分:0)

只有当你的第一个if语句为false时才会执行你的else语句,如果你声明为false,则不会执行你的else语句。

if (x < 2 && y > 10) {
   message = "Hello";
}
else {
   message = "Goodbye";
}

这将有正确的行为。