课本练习:
写下函数sumInput():
P.S。零0是有效数字,请不要将输入停止为零。
教科书解决方案:
function sumInput() {
let numbers = [];
while (true) {
let value = prompt("A number please?", 0);
// should we cancel?
if (value === "" || value === null || !isFinite(value)) break;
numbers.push(+value);
}
let sum = 0;
for (let number of numbers) {
sum += number;
}
return sum;
}
我个人不喜欢while (true)
因为它看起来不那么直观。尝试重写为do--while
会不会错? (即使有一个特殊的问题导致do--while
在这种情况下不起作用,我仍然想知道while (true)
是否只是一些......非常接受的普遍用法与否)
类似的东西:
function sumInput() {
let numbers = [];
do {
let value = prompt("A number please?", 0);
numbers.push(+value);
}
while ( (value !== "" || value !== null) && isFinite(value) );
let sum = 0;
for (let number of numbers) {
sum += number;
}
return sum;
}
答案 0 :(得分:0)
在这种情况下,你不能真正干净地使用do-while循环,因为“push”语句可能必须执行零次(例如,如果用户在输入任何数字之前退出)。但是,如果没有你想要避免的中断,循环体中的每个语句都将至少执行一次。在您的解决方案中,您最终每次都会将最终的无效值推送到数组上,这可能会破坏您的结果。
一般来说,我发现do-while循环很少有用,因为(就像这个例子一样)你经常需要在中间打破以避免一些最后的重复位(例如处理输入)。