2011-07-13 163 views
130

這聽起來像一個簡單的問題,但我沒有運氣搜索。 +d injavascript:加變量前的符號

function addMonths(d, n, keepTime) { 
    if (+d) { 

是什麼意思?

+0

可能重複[加號在'return + new Date'中做什麼](http://stackoverflow.com/questions/221539/what-does-the-plus-sign-do-in-return-新的日期) – nawfal

+1

同樣的問題,但其他頁面的標題並沒有描述一般情況下,因爲這樣做 – geotheory

+0

可能重複[JavaScript中的'+ ...'的含義](https://stackoverflow.com/q/15129137/1048572) – Bergi

回答

158

+運算符返回對象的數字表示形式。所以在你的具體情況下,它似乎是預測d是否是非零數字。

參考here。正如評論中指出的那樣,here

+4

文檔:https://developer.mozilla.org/en/JavaScript/Reference/Operators/Arithmetic_Operators#.2b_(Unary_Plus%29 –

+1

)對,Paul。@amateur,詳情如下:https:// developer .mozilla.org/en/JavaScript/Reference/Operators/Arithmetic_Operators#.2b_(Unary_Plus) –

+12

任何人蔘加混淆JavaScript比賽? –

11

它是產生數字表達式的一元「+」運算符。我相信這與d*1相同。

9

正如其他答案中所解釋的那樣,它將變量轉換爲數字。當d可以是一個數字或函數時,該函數的計算結果爲一個數字時特別有用。

實施例(使用問題的addMonths功能):

addMonths(function(){return x*y;}, 1, true); 
addMonths(34,1,true); 
addMonths("34",1,true); 

+d將評估爲在所有情況下的數字。因此,根據d是否是可以轉換爲數字的數字,函數或字符串,避免需要檢查類型並採用不同的代碼路徑。

+0

'+ d'不會以addMonths –

+0

的第一個調用示例爲真,我不知道我在寫這些時做了什麼。 '+ function(){...}'會產生一個'NaN'而不是評估函數 – ecerulm