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有冗余括号。