常用js类型转换方法浅析

1、其他类型转为 number:

1、parseFloat

parseFloat:接受一个参数,将字符串转换为数字类型,如果是引用类型(null除外),会先进行toString(),然后对返回字符串进行转换处理。例子如下:

parseFloat({age:18}) //NaN,因为{age:18}调用toString结果为"[object Object]"
parseFloat([18,22]) //18,因为[18,22].toString() =>'18,22'
parseFloat('18.22safsa') // 18.22

2、parseInt

parseInt(string,radix)接受两个参数,string位需要转换的字符串,radix为解析的基数(即原来字符串的进制)(radix大于2小于36),将字符串转换为数字类型,如果是引用类型(null除外),会先进行toString(),然后对返回字符串进行转换处理。例子如下:

parseInt('132.22sdfa') // 132
parseInt('ff') // NaN
parseInt('ff',16) //256,FF在16进制中为15,是数字。
parseInt(33,0) // 33
parseInt(33,1)或parseInt(33,2) // NaN 因为2进制中没有3

3、Number

Number:将字符串转换为数字,要求比较严格,只要存在非数字即为NaN

Number('5s') // NaN
Number('5.111') // 5.111
Number(undefined) //NaN
Number(null)  // 0 

4、位运算的妙用

用位运算符(~~、>>0、<<0)来“取整”会有一些问题,一般情况不推荐使用;位运算毕竟是操作符,效率要高一些,如果这个“取整”操作是影响性能的关键操作,并且你知道被操作数不会超出精度限制的情况,可以考虑用位运算

[] >> 0         // 0
'454sdfs' >> 0  //0
455.545 >> 0    // 455
//任何使用Number转换结果为NaN的值,使用位操作符取整均为0;

5、利用+运算符

+会进行隐式转换,能将各种类型的数据转换为数字

+'123'  //123
+'123ds' // NaN
+{} //NaN
+[] // 0
+new Date() // 相当于new Date().getTime()
+new RegExp()//NaN

6、利用-运算符

'123'-0 // 123
'123sd'-0  //NaN

以上最常用的就是+隐式转换和位运算符。图个方便

2、其他类型转为 string:

1、String

:String 将其他类型转换为字符串;(推荐使用),容错率超高,不会导致程序进程死掉

String({age:18})  // "[object Object]"
String([18,88,99]) // "18,88,99"
String(Symbol('some')) // 'Symbol(some)'

2、toString

toString,本人不喜欢用,容错率低,一不留神就给你来个bug;导致进程挂掉。
1、将一个逻辑值转换为字符串,将其他格式转换为字符串
2、将数值转换为对应的进制,然后转换为字符串
一般用法:some.toString(radix);参数radix表示需要转换成对应的进制;一般默认为10;

'123sdf'.toString(2) // '123sdf'
Number(888).toString(2) // '1101111000'
'888'.toString(2)  // '888'
[18,22].toString() // '18,22'
Object({age:18}).toString() // "[object Object]"

与String 的不同之处:toString会对数字先进行进制转换;以及 null.toString() 、 undefined.toString()会报错;
如果需要转换的值是又后台传回,或具有不确定因素时,不建议使用toString。

3、与”相加

数字与字符串相加,结果将会为字符串,加法运算中,{age:18}将会转换成0;

123+'' // '123'
{age:18}+'' // 0
[18,22]+'' // '18,22'
undefined+'' // 'undefined'
null+'' // 'null'
function fn(){} +'' // 0
var fn = function(){}; fn+'' // 'function(){}'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值