js数据类型转换
1.转换为字符串
-
显示(强制)类型转换:
- 调用
toString
放法, (null
, 与undefined
, 没有toString
放法)
let a = 10 console.log(typeof a, a) //number 10 a = a.toString() //`toString` 放法实际上是创建了一个新的字符串10, 因此需要重新赋值给a, 使a指向字符串10 console.log(typeof a, a) //string 10
- 调用
String
函数, (解决null
, 与undefined
, 对于有toString
放法的基本数据类型, 实际上还是调用toString
放法, 只是在String
函数内部调用)
let b = 33 //"33" b= null //"null" console.log(typeof b, b); b = String(b) //`toString` 函数实际上也是创建了一个新的字符串null, 因此需要重新赋值给b, 使b指向字符串null console.log(typeof b, b)
- 调用
-
隐式类型转换:
任意其他基本类型, 通过运算符
+ 上一个空的字符串
, 本质上还是调用toString
方法let b b = 5 + "" //string 5 b = true + "" //string true console.log(typeof b, b)
2.转换为Number
-
显示(强制)类型转换:
- 调用
Number
函数:
let b = "123" //123 b = "1ab" //NaN b = null //0 b = true //1 b = false // 0 console.log(typeof b, b); b = Number(b) console.log(typeof b, b)
字符串: 合法数字(“123”)转换为对应的**
Number
, 不合法数字(“a4b1c3”)则转换为NaN
, 空串或者空格转为0**布尔值: true转为**
1
, false转为0
**null: -->
0
, undefined: -->NaN
, NaN: -->NaN
-
针对字符串的两个函数:
parseInt
: 将一个字符串转为一个整数 ------解析时会自左向右读取一个字符串, 保留有效 整数位数字
parseFloat
: 将一个字符串转为浮点数 ------解析时会自左向右读取一个字符串, 保留有效 小数位数字
let a = "a123" //NaN a = 315.14 //315 a = "315.14ff48px" //315.14 a = parseInt(a) //也可以用来对Number类型进行取整(实际上是把Number转为String在转为Number),并不是最佳取整放法 a = parseFloat(a) console.log(a, typeof a)
- 调用
-
隐式转换:
对非数值的基本类型, 进行一元运算,
+
本质上还是调用Number
函数let c = "10" c = +c //number 10 c = +true //1 console.log(typeof c, c)
3.转化为Boolean
-
显示(强制)类型转换:
调用
Blooean
函数let b = 1 //true b = -1 //true b = 0 //false b = NaN //false b = Infinity //true b = Boolean(b) console.log(typeof b, b)
Number
: 0 和NaN
转化为false
, 其他为trueString
: 空串 转为false
, 其他为trueNull
: -->false
,Undefined
: -->false
,false
: -->false
,对象: --> true
所有表示空性的, 错误的, 没有的 都会转化为
false
-
隐式转换:
对非布尔值的基本数据类型, 进行逻辑非运算,
!
, 本质上还是调用Boolean
函数let a = NaN a = !a // Boolean true a = !!123 //Boolean true //取两次反, 保证123 为原本的 true console.log(typeof a, a);