2011-07-13 164 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