2014-04-13 45 views
2

我調試通過別人的代碼,我發現這個片段:的CoffeeScript一= +一

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

我首先想到的是,這個曾與做出否定一些積極的事情,但是它不不這樣做。這裏有問題的地址標識應該始終是數字,並且在數字前添加+似乎沒有任何作用。

有人會知道你爲什麼要這麼做嗎?

+0

他們是數字或者是他們數字字符串? – Bergi

+2

答案都是相似和正確的。在附註上 - 我會在'+ numericValue'上使用'Number(numericValue)'將某些東西轉換爲數字,因爲它更清楚地表明它在做什麼。如果您在代碼中看到了「Number(value)」,您會立即知道它的作用。就像我更喜歡'Boolean(val)'over'!! val'。 –

回答

4

一元運算符+將操作數轉換爲數字。從MDN

的一元加運算先於其操作數,並計算其操作數,而是試圖將其轉換成一個數字,如果沒有的話。

例如:

var a = '1'; 
console.log(a); // "1" 
console.log(+a); // 1 

所以,是的,它具有對數沒有影響,但如果你提供給它一個非數字值,它是安全地轉換成一個數字。

2

unary + operator將執行類型轉換,迫使價值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) 
相關問題