我調試通過別人的代碼,我發現這個片段:的CoffeeScript一= +一
req.body.address.id = +req.body.address.id
我首先想到的是,這個曾與做出否定一些積極的事情,但是它不不這樣做。這裏有問題的地址標識應該始終是數字,並且在數字前添加+
似乎沒有任何作用。
有人會知道你爲什麼要這麼做嗎?
我調試通過別人的代碼,我發現這個片段:的CoffeeScript一= +一
req.body.address.id = +req.body.address.id
我首先想到的是,這個曾與做出否定一些積極的事情,但是它不不這樣做。這裏有問題的地址標識應該始終是數字,並且在數字前添加+
似乎沒有任何作用。
有人會知道你爲什麼要這麼做嗎?
一元運算符+
將操作數轉換爲數字。從MDN:
的一元加運算先於其操作數,並計算其操作數,而是試圖將其轉換成一個數字,如果沒有的話。
例如:
var a = '1';
console.log(a); // "1"
console.log(+a); // 1
所以,是的,它具有對數沒有影響,但如果你提供給它一個非數字值,它是安全地轉換成一個數字。
的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)
他們是數字或者是他們數字字符串? – Bergi
答案都是相似和正確的。在附註上 - 我會在'+ numericValue'上使用'Number(numericValue)'將某些東西轉換爲數字,因爲它更清楚地表明它在做什麼。如果您在代碼中看到了「Number(value)」,您會立即知道它的作用。就像我更喜歡'Boolean(val)'over'!! val'。 –