javascript while循环问题,break不停止循环
javascript while loop problem,break doesn't stop the loop
我用 javascript 构建了一个简单的猜数字游戏。
在计算机猜出正确答案后,它应该打破循环。
我想知道的是,即使我在第 18 行打破了循环
它仍然执行第 20 行的代码 (console.log(text))。
有趣的是,休息后。只有 console.log() 被执行,L21 和 L22 什么都不做,它们应该是那样的。
真的想不通为什么。希望我把问题说清楚!
中执行最后 console.log()
但在下面的代码片段中没有(完全相同的代码)..
let answer = Math.floor(Math.random() * 100) + 1
// start coding
console.log('Answer is ' + answer)
let max = 100
let min = 0
let guess = Math.floor((max + min) / 2)
let i = 1
while (true){
let text = `#${i}: computer guess ${guess}.`
if (guess > answer){
text += 'TOO BIG!'
max = guess
} else if (guess < answer){
text += 'TOO Small!'
min = guess
} else{
text += 'win!'
break
}
console.log(text)
guess = Math.floor((max + min) / 2)
i++
}
我的猜测是因为 REPL 工具试图为您 运行 的代码显示 return 值,它使用代码退出前的最后一个值,即 text += "win!"
. 所以它实际上并没有执行你的console.log(text)
,它只是看起来像。
例如,如果您将代码更改为以下内容,REPL 工具会吐出一个数字(后缀前 i
的值)。因为这是它在 while
循环退出之前看到的最后一个值。
REPL example 显示不同的 "return" 值,按预期记录
let answer = Math.floor(Math.random() * 100) + 1
// start coding
console.log('Answer is ' + answer)
let max = 100
let min = 0
let guess = Math.floor((max + min) / 2)
let i = 1
while (guess !== answer){
let text = `#${i}: computer guess ${guess}.`
if (guess > answer){
text += 'TOO BIG!'
max = guess
} else if (guess < answer){
text += 'TOO Small!'
min = guess
}
console.log(text)
guess = Math.floor((max + min) / 2)
i++
}
// console.log(`#${i}: computer guess ${guess}. Win!`);
这不是正常的 JS 行为,在阅读 REPL 中的 "return" 值时应持保留态度 tool.Hope 这有帮助!
我用 javascript 构建了一个简单的猜数字游戏。 在计算机猜出正确答案后,它应该打破循环。 我想知道的是,即使我在第 18 行打破了循环 它仍然执行第 20 行的代码 (console.log(text))。 有趣的是,休息后。只有 console.log() 被执行,L21 和 L22 什么都不做,它们应该是那样的。 真的想不通为什么。希望我把问题说清楚!
中执行最后console.log()
但在下面的代码片段中没有(完全相同的代码)..
let answer = Math.floor(Math.random() * 100) + 1
// start coding
console.log('Answer is ' + answer)
let max = 100
let min = 0
let guess = Math.floor((max + min) / 2)
let i = 1
while (true){
let text = `#${i}: computer guess ${guess}.`
if (guess > answer){
text += 'TOO BIG!'
max = guess
} else if (guess < answer){
text += 'TOO Small!'
min = guess
} else{
text += 'win!'
break
}
console.log(text)
guess = Math.floor((max + min) / 2)
i++
}
我的猜测是因为 REPL 工具试图为您 运行 的代码显示 return 值,它使用代码退出前的最后一个值,即 text += "win!"
. 所以它实际上并没有执行你的console.log(text)
,它只是看起来像。
例如,如果您将代码更改为以下内容,REPL 工具会吐出一个数字(后缀前 i
的值)。因为这是它在 while
循环退出之前看到的最后一个值。
REPL example 显示不同的 "return" 值,按预期记录
let answer = Math.floor(Math.random() * 100) + 1
// start coding
console.log('Answer is ' + answer)
let max = 100
let min = 0
let guess = Math.floor((max + min) / 2)
let i = 1
while (guess !== answer){
let text = `#${i}: computer guess ${guess}.`
if (guess > answer){
text += 'TOO BIG!'
max = guess
} else if (guess < answer){
text += 'TOO Small!'
min = guess
}
console.log(text)
guess = Math.floor((max + min) / 2)
i++
}
// console.log(`#${i}: computer guess ${guess}. Win!`);
这不是正常的 JS 行为,在阅读 REPL 中的 "return" 值时应持保留态度 tool.Hope 这有帮助!