我正在尝试创建以下代码的变体,但希望stdin == 0
继续提示并在每个其他!value
情况下中断。
到目前为止,当stdin是一个字符串(没有一元+)并且最后用Number(value)
转换时,我已设法使它工作。
我的检查问题是零和!值都转换为false,这是标准情况afaik。我曾尝试使用AND,OR运算符,但没有运气。
let sum = 0;
while(true) {
let value = +prompt('Choose value:','');
if ( !value ) break;
sum += value;
}

答案 0 :(得分:1)
value
是一个数字,唯一的假数字是0和NaN。您可以直接检查NaN:
if (isNaN(value)) break;
请记住,+''
为0而不是NaN。保存演员表可能更合适。甚至可以选择更严格的验证,排除Infinity
或1.2e3
等输入:
let sum = 0;
while (true) {
const input = prompt('Choose value:');
const value = Number(input);
if (isNaN(value) || input === null || input.trim() === '') {
break;
}
sum += value;
}
答案 1 :(得分:0)
您可以直接检查该值是否等于零:
let sum = 0;
while(true) {
let value = +prompt('Choose value:','');
if ( value !== 0 && !value ) break;
sum += value;
}
console.log(sum);

答案 2 :(得分:0)
您可以使用默认值NaN
获取空字符串''
,然后再转换为数字。
然后检查该值是否不是数字并打破循环。
let sum = 0;
while(true) {
let value = +(prompt('Choose value:').trim() || NaN);
if (isNaN(value)) break;
sum += value;
}
console.log(sum);