一、任意类型转为字符串
1. toString()
只适用于number,boolean,object
null和undefined转换不了
(1).toString() //"1"
true.toString() //"true"
var obj={}
(obj).toString() //"[object Object]"
2. String()
- 原始类型值的转换
String(123) // "123"
String('abc') // "abc"
String(true) // "true"
String(undefined) // "undefined"
String(null) // "null"
- 对象的转换
String({name: 'suyuan'}) // "[object Object]"
String([1, 2,]) // "1,2"
- String()方法的转换规则
- 调用对象自身的toString()方法。如果返回原始类型的值,继续调用String()方法得到转换后的值,结束。
- 如果toString()方法返回的是对象,继续调用原对象的valueOf()方法。如果valueOf()方法返回原始类型的值,继续调用String()方法得到转换后的值,结束。
- 如果valueOf方法返回的是对象,就报错。
3. + ''
加上一个空的字符串
1 + '' //"1"
true + '' //"true"
null + '' //"null"
undefined + '' //"undefined"
var obj = {}
obj + '' //"[object Object]"
二、任意类型转为布尔
1. Boolean()
- 除了5个falsy值外,其他的值全部为true
undefined、null、0、NaN、''
Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false
2. !!
两个感叹号
一个!
感叹号是取反,两个!!
感叹号就是本身的值
!!1 //true
!!a //true
!!undefined //false
!!null //false
var obj = {}
!!obj //true
三、任意类型转为数字
1. Number()
- Number()的结果只有两种,要么是数字,要么是NaN
- 基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。
- 如果是对象,将返回NaN,除非是包含单个数值的数组。
Number([5]) // 5
Number(123) // 123
Number('123') // 123
Number('123abc') // NaN
Number('') // 0
Number(true) // 1
Number(false) // 0
Number(undefined) // NaN
Number(null) // 0
- Number()的转换规则
- 调用对象自身的valueOf()方法,如果返回原始类型的值,则直接对该值使用Number函数,结束
- 如果valueOf()返回的是对象,则调用对象自身的toString()方法。如果toString()方法返回原始类型的值,则对该值使用Number()方法 ,结束
- 如果toString方法返回的是对象,就报错。
var a = [1,2,3]
Number(a) //NaN
相当于
a.valueOf() //ƒ valueOf() { [native code] } 返回的是对象,则调用对象自身的toString()方法
a.toString() //"1,2,3" 返回的是原始类型的值,则对该值使用Number()方法
Number("1,2,3") //NaN 因为逗号无法转成数值,整个字符串就会被转为NaN
2. parseInt()
将字符串转为整数
- parseInt()的结果只有两种,要么是数字,要么是NaN
- 当字符的开头不能转为数字时(空格除外),就是NaN
- 还可以接受第二个参数(2-36之间),表示被解析的值的进制
parseInt(123) //123
parseInt(123abc) //123
parseInt(1.23) //1
parseInt('') //NaN
parseInt(null) //NaN
parseInt(undefined) //NaN
parseInt(true) //NaN
3. parseFloat()
将字符串转为浮点数
- parseFloat()的结果只有两种,要么是数字,要么是NaN
- 当字符的开头不能转为数字时(空格除外),就是NaN
parseFloat('3.14') // 3.14
parseFloat('123.45abc') // 123.45
parseFloat('') // NaN
parseFloat(true) // NaN
parseFloat(null) // NaN
parseFloat(undefined) //NaN
4. -0
减0
'123'-0 //123
5. +
+ '123' //123
网友评论