d在什么里面
function addMonths(d, n, keepTime) {
if (+d) {
的意思吗?
d在什么里面
function addMonths(d, n, keepTime) {
if (+d) {
的意思吗?
当前回答
正如在其他答案中解释的那样,它将变量转换为一个数字。当d既可以是一个数字,也可以是一个求值为数字的字符串时,特别有用。
示例(在问题中使用addMonths函数):
addMonths(34,1,true);
addMonths("34",1,true);
然后+d在所有情况下都是一个数字。因此,无需根据d是数字、函数还是可以转换为数字的字符串来检查类型并采用不同的代码路径。
其他回答
+运算符返回对象的数字表示形式。所以在你的特殊情况下,它似乎是根据d是否为非零数来预测if。
参考这里。正如评论中指出的,在这里。
Operator +是一个一元操作符,它将值转换为数字。下表列出了对不同值使用此运算符的相应结果。
+----------------------------+-----------+
| 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 |
+----------------------------+-----------+
Operator +为实现了valueOf方法的对象返回一个值。
let something = {
valueOf: function () {
return 25;
}
};
console.log(+something);
它是一个一元的“+”运算符,产生一个数值表达式。应该和d*1是一样的。
正如在其他答案中解释的那样,它将变量转换为一个数字。当d既可以是一个数字,也可以是一个求值为数字的字符串时,特别有用。
示例(在问题中使用addMonths函数):
addMonths(34,1,true);
addMonths("34",1,true);
然后+d在所有情况下都是一个数字。因此,无需根据d是数字、函数还是可以转换为数字的字符串来检查类型并采用不同的代码路径。