2017-04-05 102 views
-1

問題:此代碼中額外的'+'代表什麼?遞歸函數

數字根是數字中所有數字的遞歸總和。給定n,取n的數字之和。如果該值有兩位數字,則繼續以這種方式減少直到產生一位數字。這隻適用於自然數。

example: 
digital_root(16) 
=> 1 + 6 
=> 7 

這是已編碼的功能:

function digital_root(n) { 
if (n < 10) { 
    return n; 
    } 
     return digital_root(n.toString().split('').reduce(function (a, b) { 
     return a + +b; 
     }, 0)); 
} 

有人能澄清什麼額外的+在這行代碼是幹什麼的? return a + +b;

+0

它們以一種不可讀的方式將字符串轉換爲數字。你可以用'a + Number(b)'代替它。 – zerkms

+0

啊!好吧,好吧,我真的很感謝 – jalexyep

回答

0

它可能是一個字符串轉換爲整數的偷偷摸摸的。您不會說這是什麼語言,但許多動態語言允許變量是沒有聲明的任何類型,並且使用+來進行加法和字符串連接,並在字符串和數字之間進行隱式轉換。這樣的語言可以很容易地意外地得到錯誤的東西(當你打算添加時連接,反之亦然)。

但是,使用一個一元+(通常)是一個數字身份,它將其參數轉換爲數字(如果它恰好是一個字符串 - 如果參數已經是數字,它什麼也不做)。那麼二進制+將被添加而不是連接。

+0

'一個字符串到一個整數' - >'一個字符串到一個數字' – zerkms