变量前加号的作用是什么?

+d在什么里面

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

的意思吗?

160091 次浏览

+操作符返回对象的数字表示形式。所以在你的特定情况下,它似乎是根据d是否为非零数来预测if。

参考在这里。并且,正如在评论中指出的,在这里.;

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

正如在其他答案中解释的那样,它将变量转换为一个数字。当d既可以是一个数字,也可以是一个求值为数字的字符串时特别有用。

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

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

那么+d将在所有情况下计算为一个数字。因此,无需根据d是一个数字、一个函数还是一个可以转换为数字的字符串来检查类型并采用不同的代码路径。

操作符+是一个一元操作符,它将值转换为数字。下表列出了对不同值使用此运算符的相应结果。

+----------------------------+-----------+
| 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);