为什么if(number< = 10)不起作用?

时间:2013-09-14 22:31:13

标签: javascript numbers

var way = 'up';
var m25 = {
    'n': 10
};

for (var somelongnumber = 0; i < 10000; i++) {
    if (way === 'up') {
        m25.n = m25.n + 5;
        if (m25.n >= 90) {
            way = 'down';
        }
    } else {
        m25.n = m25.n - 5;
        if (m25.n <= 10) {
            way = 'down';
        }
    }

    console.log(way + m25.n);
}

此console.logs:

up15
up20
up25
up30
up35
up40
up45
up50
up55
up60
up65
up70
up75
up80
up85
down90
down85
down80
down75
down70
down65
down60
down55
down50
down45
down40
down35
down30
down25
down20
down15
down10
down5
down0
down-5
down-10
down-15
down-20
down-25
down-30
down-35
down-40
down-45
down-50
down-55

为什么它会超过零?我很困惑!

6 个答案:

答案 0 :(得分:2)

首先,您应该格式化代码,以便更容易阅读。然后你可能会注意到你的错误。 if (m25.n <= 10) way = 'down';应为'up'

var way = 'up';
var m25 = {
    'n': 10
};

for (var i = 0; i < 1000; i++) {
    if (way === 'up') {
        m25.n = m25.n + 5;
        if (m25.n >= 90) {
            way = 'down';
        }
    } else {
        m25.n = m25.n - 5;
        if (m25.n <= 10) {
            way = 'up';
        }
    }

    console.log(way + m25.n);
}

答案 1 :(得分:1)

当它看到&lt; = 10时,它会设置为“向下”,当你打算“向上”时

答案 2 :(得分:0)

这是因为你永远不会重新分配回“up”。您必须在else ...

中编辑第二个if语句
else {
    m25.n = m25.n - 5;
    if (m25.n <= 10) {
        way = 'up';  // RIGHT HERE
    }
}

答案 3 :(得分:0)

你还没有宣布我。相反,你正在使用一些数字......

答案 4 :(得分:0)

也许你想在第二个时再次up(m25.n <= 10) way = 'down';应为“up

此外,您可能希望在i内部使用somelongnumber

演示here

答案 5 :(得分:0)

你可以尝试:

   if (m25.n <= 10) {
        way = 'up';
    }

while (m25.n >= 0) {
    console.log(way + m25.n);
}