Javascript 咖啡脚本a=&x2B;A.

Javascript 咖啡脚本a=&x2B;A.,javascript,coffeescript,Javascript,Coffeescript,我正在调试其他人的代码,发现了以下代码段: req.body.address.id=+req.body.address.id 我的第一个想法是,这与使一个负数为正数有关,但它不能做到这一点。这里讨论的地址id应该始终是数字,在数字前面添加一个+似乎没有任何作用 有人知道为什么要这样做吗?一元+运算符将操作数转换为数字。发件人: 一元加号运算符位于其操作数之前,并计算为其操作数,但如果尚未将其转换为数字,则尝试将其转换为数字 例如: var a = '1'; console.log(a); //

我正在调试其他人的代码,发现了以下代码段:

req.body.address.id=+req.body.address.id

我的第一个想法是,这与使一个负数为正数有关,但它不能做到这一点。这里讨论的地址id应该始终是数字,在数字前面添加一个
+
似乎没有任何作用


有人知道为什么要这样做吗?

一元
+
运算符将操作数转换为数字。发件人:

一元加号运算符位于其操作数之前,并计算为其操作数,但如果尚未将其转换为数字,则尝试将其转换为数字

例如:

var a = '1';
console.log(a);  // "1"
console.log(+a); // 1 
因此,是的,它对数字没有影响,但如果您为其提供非数字值,则它对于安全地将其转换为数字非常有用。

将执行类型转换,强制使用值
ToNumber()
,如有必要:

var foo = '1';
var bar = +foo;

console.log(typeof foo, foo + 2); // 'string' '12' (concatenates)

console.log(typeof bar, bar + 2); // 'number' 3 (adds)

它们是数字还是数字字符串?答案既相似又正确。另一方面,我会使用
Number(numericValue)
over
+numericValue
将某个东西转换成数字,因为它更明确地说明了它在做什么。如果您在代码中看到
Number(value)
,您将立即知道它的作用。就像我更喜欢
Boolean(val)
而不是
!!val