回到课程

输入数字求和

重要程度: 4

写出函数 sumInput(),要求如下:

  • 使用 prompt 向用户索要值,并存在数组中。
  • 当用户输入了非数字、空字符串或者点击“取消”按钮的时候,问询结束。
  • 计算并返回数组所有项之和。

P.S. 0 是有效的数字,不要因为是 0 就停止问询。

运行 demo

请注意这个解决方案的细微但是很重要的细节。我们没有在 prompt 后立即把 value 转换成数字,因为在执行 value = +value 之后,就没办法区分出空字符串(中断标志)和数字 0(合法输入)了,所以要放到后面再处理。

function sumInput() {

  let numbers = [];

  while (true) {

    let value = prompt("A number please?", 0);

    // 应该结束了吗?
    if (value === "" || value === null || !isFinite(value)) break;

    numbers.push(+value);
  }

  let sum = 0;
  for (let number of numbers) {
    sum += number;
  }
  return sum;
}

alert( sumInput() );