资讯专栏INFORMATION COLUMN

JS字符串转数字方法总结

call_me_R / 2521人阅读

摘要:字符串中的负十六进制数字是一个特殊情况,如果你用解析,结果是不正确的。按位非可以把字符串转换成整数,但他不是浮点数。如果是一个字符串转换,它将返回这是什么原理通过翻转每个位,也称为数字的补码。

String转换为Number有很多种方式,我可以想到的有5种!但总有一些情况让人猝不及防,总结到这里供自己日后查找方便
parseInt

根据JsPerf.com的基准测试,大多数浏览器对parseInt的响应最佳。虽然它是最快的方式,但使用preseInt会碰到一些常见陷阱:parseInt: 没有传入基数时,默认是传入的基数为10 parseInt(num, 10),如果你不知道num属性的类型,不要使用parseInt进行字符串转数字。

parseInt("043") // returns 0 部分老浏览器.
parseInt("20.mp4") // returns 20

parseFloat

如果你不解析16进制数,这是一个非常好的选择。字符串中的负十六进制数字是一个特殊情况,如果你用parseFloat解析,结果是不正确的。为了避免程序出现NaN的情况,应该检查转化后的值。

parseInt(-0xFF) // returns -255
parseInt("-0xFF") // returns -255
parseFloat(-0xFF) // returns -255
parseFloat("-0xFF") // returns 0
parseFloat("44.jpg") // return 44
按位非

可以把字符串转换成整数,但他不是浮点数。如果是一个字符串转换,它将返回0;这是什么原理?通过翻转)每个位,也称为数字的A1补码。你可以使用它,但注意只能用来存储整数。所以通常情况不要用它,除非你能确定这个数是在32位整数之间的值(因为调用的ToInt32的规范)。 按位非:用它确保输入中没有字符,仅用于整数。

~~1.23 // returns 1
~~"1.23" // returns 1
~~"23" // returns 23
~~"Hello world" // returns 0

Number

Number与以上提及的转换方式一样存在这样的问题,解析时试图找出你给他的数字:注意:023实际上是一个八进制数,无论你怎么做,都是返回19;对于没有单引号或双引号的十六进制数一样。Number也是JsPerf中最慢的之一。

Number("023") // returns 23
Number(023) // returns 19
一元云算符
"1.23" * 1 // returns 1.23
"0xFF" - 0 // returns 255
"0xFF.jpg" / 1 // returns NaN
+"023" // returns 23

一元运算符与其它的解析方式不同,如果是一个NaN值,那么返回的也是NaN 。这是我最喜欢的数值转换方式,因为我认为任何带有字符的对象都不应该被视为0或者根据他有多少位来“猜”。我基本使用 + 操作符,因为这个方式不容易混淆。虽然 -0 的用法也很好,但它并没有很好的表达转换为数字的本意。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96018.html

相关文章

  • 进击的 JavaScript(一) 之 类型

    摘要:实际上,我们通常认为是自有类型的唯一成员。比较运算符的操作数可能是任意类型。结果只有,例得到操作值等价的布尔值真值为,假值为等同于,经常称为强制转换。结果返回布尔值的用法是中唯一一个不等于任何值的包括它自己。 说起 js 类型转换,都是头疼吧,晕晕的,但是不行啊,这东西很重要滴! 基础知识 JavaScript的数据类型分为六种,分别为null, undefined, boolean,...

    Scholer 评论0 收藏0
  • 前端总结

    摘要:是一个双目运算符内部实现机制是通过原型链来判断能自定义行为的东西三类型转换转除了其他所有值都转为包括所有对象对象转原始类型对象在转换类型的时候,会调用内置的函数该方法在转原始类型时调用优先级最高。 JS基础知识 (一)JS中原始类型(1)原始值有六种:boolean,null,undefined,number,string,symbol(2)原始类型存储的都是值,没有函数可以调用,能够...

    Jenny_Tong 评论0 收藏0
  • 前端总结

    摘要:是一个双目运算符内部实现机制是通过原型链来判断能自定义行为的东西三类型转换转除了其他所有值都转为包括所有对象对象转原始类型对象在转换类型的时候,会调用内置的函数该方法在转原始类型时调用优先级最高。 JS基础知识 (一)JS中原始类型(1)原始值有六种:boolean,null,undefined,number,string,symbol(2)原始类型存储的都是值,没有函数可以调用,能够...

    bladefury 评论0 收藏0
  • 前端总结

    摘要:是一个双目运算符内部实现机制是通过原型链来判断能自定义行为的东西三类型转换转除了其他所有值都转为包括所有对象对象转原始类型对象在转换类型的时候,会调用内置的函数该方法在转原始类型时调用优先级最高。 JS基础知识 (一)JS中原始类型(1)原始值有六种:boolean,null,undefined,number,string,symbol(2)原始类型存储的都是值,没有函数可以调用,能够...

    Zoom 评论0 收藏0
  • JS总结篇--[]JS学习总结-技巧、方法、细节

    摘要:变量转换类型类型类型类型类型但是转换日期和正则表达式必须使用构造函数,创建正则表达式的时候要使用这样的简化形式。 变量转换 var myVar = 3.14159, str = + myVar,// string类型 int = ~~myVar, // number类型 float = 1*myVar, // number类型 bool = !!myVar, // bo...

    wizChen 评论0 收藏0

发表评论

0条评论

call_me_R

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<