我目前在学习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函数功能来诠释,正如评论在代码中。但是当我不做类型转换的时候,事情就变得很奇怪了,如果我输入提示值为5,那么我得到的最终结果是054321。AND以类似的方式输入3,得到0321等等。
为什么会这样?有人可以向我解释为什么totalSum会是这样一个数字吗? javascript是不是会自动帮我把它变成整数,以便它在函数totalSum中工作?
样本代码也可以在http://jsfiddle.net/hphchan/66ghktd2/中查看。
谢谢。
'i'是一个字符串,需要将其转换为数字,'数(i)' – Hacketo