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(){}'