从!值

时间:2018-04-14 10:59:04

标签: javascript

我正在尝试创建以下代码的变体,但希望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;
}




3 个答案:

答案 0 :(得分:1)

value是一个数字,唯一的假数字是0和NaN。您可以直接检查NaN:

if (isNaN(value)) break;

请记住,+''为0而不是NaN。保存演员表可能更合适。甚至可以选择更严格的验证,排除Infinity1.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);