Может кто-нибудь объяснить, почему этот код объединяет, а не добавляет числовые значения? - PullRequest
3 голосов
/ 14 февраля 2020

Итак, для начала я знаю, что этот код грязный, пожалуйста, потерпите меня, но кто-нибудь может объяснить, почему это объединяет введенную информацию, а не добавляет числовые значения после прохождения через parseInt()?

var sol = 0;
var n = 0;

while(n !== null)
{

parseInt(n = prompt("Please enter a number to be added onto stack"));
  if(n != null || n != NaN)
  {
    sol = parseInt(sol);
    sol += n;
  }

}
console.log(sol);

1 Ответ

5 голосов
/ 14 февраля 2020

prompt() возвращает строку.

parseInt() принимает строку и возвращает число.

Вы ничего не делаете с возвращаемым значением первого parseInt. Это означает, что n является строкой. Поэтому, когда вы делаете sol += n, вы добавляете строку и число вместе, а javascript предполагает, что вы хотели объединить строки вместе, поскольку математика со строкой и числом не имеет никакого смысла.

Вы вероятно, намеревался сделать:

n = parseInt(prompt("Please enter a number to be added onto stack"));
...