0
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

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

4

6 回答 6

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);
}
于 2013-09-14T22:35:30.460 回答
1

当它看到 <=10 时,它会设置为“向下”,而您希望它是“向上”

于 2013-09-14T22:35:12.237 回答
0

这是因为您永远不会将方式重新分配回“向上”。您必须在 else 中编辑第二个 if 语句...

else {
    m25.n = m25.n - 5;
    if (m25.n <= 10) {
        way = 'up';  // RIGHT HERE
    }
}
于 2013-09-14T22:35:30.490 回答
0

你还没有声明我。相反,您正在使用 somelongnumber ...

于 2013-09-14T22:35:49.643 回答
0

也许你想up在第二个如果?(m25.n <= 10) way = 'down';应该是' up'

而且你可能想要i在 for 里面somelongnumber

演示在这里

于 2013-09-14T22:38:31.690 回答
0

你可以试试:

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

和:

while (m25.n >= 0) {
    console.log(way + m25.n);
}
于 2013-09-14T22:39:35.303 回答