CoffeeScript a = +a

CoffeeScript a = +a

本文关键字:CoffeeScript      更新时间:2023-09-26

我正在调试别人的代码,我发现了这个片段:

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

我的第一个想法是,这与使负数为正数有关,但事实并非如此。这里有问题的地址id应该总是数字,在数字前面添加+似乎没有任何作用。

有人知道你为什么这么做吗?

一元+运算符将操作数转换为数字。来自MDN:

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

例如:

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)