簡體   English   中英

JAVASCRIPT數據類型問題

[英]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 += asum = "05" + 4sum = "054" )...

請參閱window.prompt文檔 :( 重點是我的)

結果是一個字符串,其中包含用戶輸入的文本,或者值null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM