在变量之前加号的目的是什么?

时间:2011-07-13 17:24:19

标签: javascript

这听起来像一个简单的问题,但我没有运气搜索。

中的+d是什么
function addMonths(d, n, keepTime) { 
    if (+d) {

装置?

4 个答案:

答案 0 :(得分:234)

+运算符返回对象的数字表示。因此,在您的特定情况下,它似乎是预测d是否为非零数字。

参考here。而且,正如评论中所指出的,here

答案 1 :(得分:19)

它是一个一元“+”运算符,它产生一个数值表达式。我相信它会与d*1相同。

答案 2 :(得分:10)

如其他答案所述,它将变量转换为数字。当d可以是数字或字符串 函数 评估为数字时特别有用。

示例(使用问题中的addMonths函数):

addMonths(34,1,true);
addMonths("34",1,true);

然后+d将在所有情况下评估为数字。因此,无需检查类型并采用不同的代码路径,具体取决于d是否为可以转换为数字的数字,函数或字符串。

答案 3 :(得分:3)

运算符+是将值转换为数字的一元运算符。下面,我准备了一张表格,其中包含针对不同的值使用此运算符的相应结果。

+-----------------------------+-----------+
| Value                       | + (Value) |
+-----------------------------+-----------+
| 1                           | 1         |
| '-1'                        | -1        |
| '3.14'                      | 3.14      |
| '3'                         | 3         |
| '0xAA'                      | 170       |
| true                        | 1         |
| false                       | 0         |
| null                        | 0         |
| 'Infinity'                  | Infinity  |
| 'infinity'                  | NaN       |
| '10a'                       | NaN       |
| undefined                   | Nan       |
| ['Apple']                   | Nan       |
| function(val){ return val } | NaN       |
+-----------------------------+-----------+

运算符+返回已实现方法valueOf的对象的值。

let something = {
    valueOf: function () {
        return 25;
    }
};

console.log(+something);