将字符串转换为javascript中的数字

Om3*_*3ga 10 javascript

我想解析包含经度和纬度的用户输入.我想要做的是将字符串强制转换为数字,保留其符号和小数位.但我想要做的是在用户输入无效时显示一条消息.我应该遵循哪一个

parseFloat(x)
Run Code Online (Sandbox Code Playgroud)

第二

new Number(x)
Run Code Online (Sandbox Code Playgroud)

第三

~~x
Run Code Online (Sandbox Code Playgroud)

第四

+x
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 18

我会使用Number(x),如果我必须在这两者之间做出选择,因为它不会允许尾随垃圾.(嗯,它"允许"它,但结果是NaN.)

也就是说,Number("123.45balloon")NaN,但是parseFloat("123.45balloon")123.45(如数字).

正如克林先生指出的那样,哪些是"更好"取决于你.

编辑 -啊,你已经加回+x~~x.正如我在评论中所写,+x相当于使用Number()构造函数,但我认为由于+运算符的语法灵活性,它有点风险.也就是说,剪切和粘贴很容易引入错误.该~~x形式是好的,如果你知道你想要一个整数(32位整数)反正.对于纬度/长度,这可能不是你想要的.


Ate*_*ral 6

第一个更好.它是明确的,而且是正确的.你说你想要解析浮点数.~~x会给你一个整数.

  • 就像我说的,这将是我个人的偏好,但是"+ x"更短,使用它没有任何问题.(在括号中使用它`(+ x)​​`无论如何都会解决语法问题,而且仍然比`Number(x)`:-)更短 (2认同)