JavaScript-数据类型转换

2019-02-28  本文已影响0人  qh0814

JavaScript一共有7种数据类型,由于JavaScript是一种动态类型的语言,所以变量的数据类型是不确定的,随时可以变动。数据类型的转换可分为:

1.强制转换(显式转换)

undefined、null由于只有一个值,在这里不讨论如何转换为该类型。

1.1 转换为number

Number('123') //  123 将字符串转为对应数值
Number('123number') //NaN 对于字符串中的非number部分则无法解析,返回NaN
Number('number123') // NaN 
Number('') // 0 空字符串返回0
Number(undefined) // NaN
Number(null)  // 0
Number(true) //1
Number(false) //0
Number(' 123 ') // 123 自动忽略前缀和后缀的空格
parseInt()  //NaN  为空时返回NaN
parseInt('')  //NaN
parseInt('123')  //123
parseInt('1.23')  // 1 从第一个字符开始,这里的小数点无法解析,直接返回解析好的1
parseInt('b1')  //NaN  若第一个字符无法解析,则返回NaN
parseInt('-1')  // -1 第一个字符若是正负号,则可以正常解析
parseInt('0xa') //10 支持10进制外的表示法
parseInt('0xg') //NaN 若字符不属于该进制,则返回NaN
parseInt(true) //NaN 若参数不为字符串,则先自动转换类型为字符串

第二个参数:按几进制的规则来转换,默认为10,可空

parseInt('100',2) //4
parseInt('100',8) //64
parseInt('100',16) //256
parseInt('1002',2) //4 若有字符不属于该进制,则忽略该字符
parseInt('200',2) //NaN 若首字符不属于该进制,则返回NaN
parseFloat() //NaN
parseFloat('1.23') //1.23
parseFloat('parseFloat 1.23') //NaN
parseFloat('1.23parseFloat') //1.23
parseFloat('true') //NaN
parseFloat('123e-3') //0.123  支持科学计数法

3个方法的比较:

1.2 转换为string

String(123) //'123'  数值直接转换成对应的string
String(314e-2) // '3.14' 支持科学计数法
//布尔值、undefined、null转成对应的字面字符 
String(true) // 'true'   
String(undefined) // 'undefined'
String(null) // 'null'    
(123).toString() //'123' 单纯的数值必须加括号,否则报错
 var a = 123
 a.toString() //'123'  
true.toString() //'true' 布尔值可以不加括号
({a:1}).toString() //'[object object]'

注:该方法不适用于null、undefined

1.3转换为boolean

//除了这5个值其余的都将被转为true
Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false

2.自动转换(隐式转换)

有很多情况JavaScript会对值进行自动转换,但总体遵循着这样的规则:
在预期得到某类型值的地方,就会用转换该类型的方法自动转换。
比如:

typeof(1 + 'string') //'string'

可以看出这里预期得到string,尽管是number类型和string相加。所以这里会用转为string的方法进行自动转换。结果如下:

1 + 'string' // '1string'

一些通过隐式转换的简易转换方法:

'length=' + 6 // 'length=6'
2 * '2' //4
true - 1 //0
5 / false //Infinity

JavaScript提供的隐式转换可以快速自动转换一个值的类型,但由于隐式转换有不确定性,且不容易纠错,个人认为在有主观需要转换的地方用显式转换类型

上一篇下一篇

猜你喜欢

热点阅读