【发布时间】:2021-12-12 19:53:51
【问题描述】:
我的变量normalWeek等于某个时间段,如果这个时间段为真,则执行第一个条件,如果不是,while循环将执行第二个条件,直到变量normalWeek变为真。但问题是,当我执行代码时,循环发现为真的第一个条件将是唯一执行的条件,即使在另一个条件变为真之后也是如此。
例如变量normalWeek如果是早上6点就为真,但是即使不是早上6点,循环也会继续执行同样的条件,它基本上忽略了另一个条件。
var date = new Date();
var hour = date.getHours();
var day = date.getDay();
var minute = date.getMinutes();
function goodSignal() {
console.log(b, 'Good Signal');
}
function badSignal() {
console.log(b, 'Bad Signal');
}
function sleep(miliseconds) {
var currentTime = new Date().getTime();
while (currentTime + miliseconds >= new Date().getTime()) {
}
}
let b = 0;
let normalWeek = (hour === 6 || hour === 10) && (day > 0 && day < 6);
while (b === 0) {
console.log('Testing Started...');
while (normalWeek === true) {
b++;
goodSignal();
sleep(10000);
continue;
}
while (normalWeek === false) {
b++;
badSignal();
sleep(10000);
continue;
}
}
【问题讨论】:
-
如果我对问题的理解正确,您需要在 eloop 中调用 getHours 和 getDay 来检查它是否在上午 6:00 之后。
-
同意arp5。小时和日变量没有得到更新。另外,while循环是否循环?在 true 或 false 时,b 会递增,这将打破循环。只是为了测试吗?
-
实际的问题是,在其中一个 if 条件为真之后,即使在所述条件变为假之后,循环也将始终选择执行相同的条件。例如。 normalWeek 变量只有在上午 9 点才为真(我知道 normalWeek 变量在我的代码中具有不同的值,只是使用上午 9 点更容易解释),如果时间过去了,现在是上午 10 点,那么 normalWeek 为假,但正常周继续当它应该是假的时候,就好像它是真的一样被执行,并执行另一个条件。
-
我只是改了,如果使用while,但它总是有同样的问题
-
现在您已经创建了内部
while循环,您的continue语句将无休止地重复内部循环。暂时忽略你写的代码,你希望你的程序最终做什么?
标签: javascript if-statement time while-loop conditional-statements