[英]JAVASCRIPT Data Type Issue
我目前正在學習JS,當我進行一些練習時,發現一些關於Javascript數據類型不清楚的問題。 我知道JS不需要特定的類型指示,它會在可能的情況下自動進行類型轉換。 但是,當我不進行以下類型轉換時,我遇到了一個問題:
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函數將數據類型從字符串更改為int,則代碼可以完美運行,就像代碼中的注釋一樣。 但是,當我不執行類型轉換時,事情變得很奇怪,如果將提示值輸入為5,則最終結果為054321,並且以類似的方式輸入3,得到0321,依此類推。
為什么會這樣呢? 有人可以向我解釋為什么totalSum是這么一個數字嗎? javascript不會自動幫助我將其轉換為整數,以便使其在totalSum函數中工作嗎?
還可以在http://jsfiddle.net/hphchan/66ghktd2/中查看示例代碼。
謝謝。
我將嘗試分解totalSum
方法中發生的事情。
首先,使用字符串作為參數調用totalSum
方法,就像執行totalSum("5");
然后sum += a;
( sum = 0 + "5"
: sum = "05"
)(請注意, sum
現在變成了字符串)
然后return totalSum(--a);
, --a
是的值轉換a
電話號碼,並遞減它的值。 就像調用return totalSum(4);
然后sum += a
( sum = "05" + 4
: sum = "054"
)...
請參閱window.prompt的文檔 :( 重點是我的)
結果是一個字符串,其中包含用戶輸入的文本,或者值null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.