2013-04-24 125 views
0

我試圖將字符串轉換爲浮動。我知道parseFloat()可以做到這一點,但我也發現了下面的語法,但沒有太多的參考。哪一個是正確的?警報(+「123」))警報(+「123」)警報(+(「123」))

什麼是正確的語法,因爲他們似乎都工作。我在哪裏可以瞭解更多信息?我不知道如何Google,因爲我不知道它的名字。

// syntax 1 
alert((+"123")); // 123 
alert((+"x123")); // NaN 
alert((+"123x")); // NaN 
alert((+"123 ")); // 123 
alert((+" 123")); // 123 
alert((+"12 3")); // NaN 

// syntax 2 
alert(+"123");  // 123 
alert(+"x123");  // NaN 
alert(+"123x");  // NaN 
alert(+"123 "); // 123 
alert(+" 123"); // 123 
alert(+"12 3");  // NaN 

// syntax 3 
alert(+("123")); // 123 
alert(+("x123")); // NaN 
alert(+("123x")); // NaN 
alert(+("123 ")); // 123 
alert(+(" 123")); // 123 
alert(+("12 3")); // NaN 
+1

額外'()'沒有做什麼特別的東西在這裏,因爲他們只是分組單一計算值(語法1)或文字(語法3),如果你刪除的意思是沒有什麼不同的'() '。如果你要做一些像alert(+(「123」+「456」));',那麼額外的'()'會做一些有意義的事情,計算會隨着它們的移除而改變(儘管結果會結果是一樣的,但你到那裏的方式不會)。 – ajp15243 2013-04-24 14:33:13

+1

此外,[關於JavaScript一元運算符](http://stackoverflow.com/questions/12120802/explain-var-and-var-unary-operator-in-javascript)可能有助於回答你的問題。 – ajp15243 2013-04-24 14:36:31

回答

2

這被稱爲隱式轉換。由於您使用了數學運算符(+),因此它會嘗試將字符串轉換爲數學運算所需的數值。你在這裏問的是給我下面的字符串的正面價值。

+0

謝謝你,但我不覺得它返回一個正值 – wubbewubbewubbe 2013-04-24 14:41:37

+0

+1提的隱式轉換,但我更喜歡用'coercion'因爲它聽起來冷卻器:) – 2013-04-24 14:55:53

+0

@wubbewubbewubbe是不是'123'正值'123「的? – 2013-04-24 14:59:05

3

它們在語法上都是正確的......但示例1和3有冗餘括號。