В настоящее время я изучаю JS, и когда я делаю некоторую практику, я нахожу некоторые проблемы, которые я не понимаю в типе данных в Javascript. Я понимаю, что JS НЕ требует специального указания типа, он будет автоматически выполнять преобразование типов, когда это возможно. Тем не менее, я страдаю одна проблема, когда я не делаю преобразование типа, который выглядит следующим образом:JAVASCRIPT Тип данных Выпуск
var sum = 0;
function totalSum (a) {
if (a == 0) {
return sum;
}
else {
sum += a;
return totalSum(--a);
}
}
var i = prompt("Give me an integer");
// var num = parseInt(i);
alert("Total sum from 1 to " + i + " = " + totalSum(i));
// alert("Total sum from 1 to " + i + " = " + totalSum(num));
Я заметил, что код работает отлично, если я изменить тип данных из строки в целое, используя функцию ParseInt, так же, как комментарий в коде. НО, когда я НЕ делаю преобразование типа, все становится странным, и я получаю окончательный результат 054321, если я вводим значение приглашения как 5. И аналогичным образом ввод 3, получает 0321 и так далее.
Почему это так? Может кто-нибудь объяснить мне, почему totalSum будет таким числом? Разве javascript автоматически не помогает мне превратить его в целое число, чтобы оно работало в функции totalSum?
Образец кода можно также посмотреть в http://jsfiddle.net/hphchan/66ghktd2/.
Спасибо.
'i' является строка, нужно преобразовать его в число,' Number (I) ' – Hacketo