【发布时间】:2011-10-04 17:01:33
【问题描述】:
+d 是什么
function addMonths(d, n, keepTime) {
if (+d) {
是什么意思?
【问题讨论】:
-
同样的问题,但其他页面的标题没有像这样描述一般情况
标签: javascript
+d 是什么
function addMonths(d, n, keepTime) {
if (+d) {
是什么意思?
【问题讨论】:
标签: javascript
【讨论】:
.parseInt()有什么区别?
parseInt 将返回一个整数,因此如果您执行parseInt("5.51"),结果将是5,而+"5.51" 将返回5.51。 2. parseInt 将解析字符串中的数字并在第一个非数字符号处停止,而一元加号将转换整个输入。所以parseInt("5 bananas") //5 而+"5 bananas" //NaN
运算符+ 是将值转换为数字的一元运算符。下表列出了使用该运算符对不同值的对应结果。
| 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);
【讨论】:
1. 和其他以. 结尾的字符串将通过删除尾随. 来修复。我在修复一些实时输入处理程序中的错误时偶然发现了这一点,该错误应该允许输入十进制数字但由于+ 运算符修剪掉尾随的. 而没有按预期工作。
if 语句中谨慎使用+ 运算符,因为NaN 既不等于'true` 也不等于false:if (+function(){ }) console.log('success') - 这不会执行
它是一个产生数字表达式的一元“+”运算符。我相信它会和d*1 一样。
【讨论】:
'string'*1 返回的内容与+'string' 不同怎么办?所以,它大致相同 - 我相信:)
正如其他答案中所解释的,它将变量转换为数字。当d 可以是数字或计算结果为数字的字符串时特别有用。
示例(在问题中使用addMonths 函数):
addMonths(34,1,true);
addMonths("34",1,true);
那么+d 在所有情况下都会计算为一个数字。从而避免需要检查类型并根据d 是数字、函数还是可以转换为数字的字符串来采用不同的代码路径。
【讨论】:
+d 在 addMonths 的第一个调用示例中不会计算为数字
+function(){...} 将产生 NaN 不评估函数