5、类型转换——字符串
类型转换指将一种数据类型转换为其他类型将其他类型转换为(字符串、数值和布尔值)
转换为字符串
1.调用toString()方法将其他类型转换为字符串
- 调用xxx的yyy方法--> xxx.yyy()
- 由于null和undefined中没有toString()所以对这两个东西调用toString()时会报错
2.调用String()函数将其他类型转换为字符串 - 调用xxx函数--> xxx()
- 原理:对于拥有toString()方法的值调用String()函数时, 实际上就是在调用toString()方法对于null,则直接转换为"null"对于undefined,直接转换为"undefined"
<script>
let a = 10 // "10"
a = true // "true"
a = 11n // "11"
a = undefined
// console.log(typeof a, a)
// a = a.toString() // "10"
// console.log(typeof a, a)
let b = 33 // "33"
b = null // "null"
b = undefined // "undefined"
b = true
console.log(typeof b, b)
b = String(b)
console.log(typeof b, b)
</script>
6、类型转换——数值
将其他的数据类型转换为数值
1.使用Number()函数来将其他类型转换为数值
转换的情况:
- 字符串:
- 如果字符串是一个合法的数字,则会自动转换为对应的数字
- 如果字符串不是合法数字,则转换为NaN
- 如果字符串是空串或纯空格的字符串,则转换为0
- 布尔值:
- true转换为1,false转换为0
- null 转换为 0
- undefined 转换为 NaN
专门用来将字符串转换为数值的两个方法
parseInt() —— 将一个字符串转换为一个整数
- 解析时,会自左向右读取一个字符串,直到读取到字符串中所有的有效的整数
- 也可以使用parseInt()来对一个数字进行取整
parseFloat() —— 将一个字符串转换为浮点数
- 解析时,会自左向右读取一个字符串,直到读取到字符串中所有的有效的小数
<script>
let a = '123' // 123
a = 'abc' // NaN
a = '3.1415926' // 3.1415926
a = '11px' // NaN
a = '' // 0
a = ' ' // 0
a = true // 1
a = false // 0
a = null // 0
a = undefined // NaN
// console.log(typeof a, a)
a = Number(a)
// console.log(typeof a, a)
let b = '123px'
b = 'a123'
b = '123.45'
// b = 456.123
console.log(typeof b, b)
b = parseInt(b)
console.log(typeof b, b)
</script>
7、类型转换——布尔值
1.使用Boolean()函数来将其他类型转换为布尔值
- 转换的情况:数字:
- 0 和 NaN 转换为false
- 其余是true
字符串:
- 空串 转换为 false
- 其余是true
null和undefined 都转换为 false
对象:对象会转换为true
- 所有表示空性的没有的错误的值都会转换为false:0、NaN、空串、null、undefined、false
<script>
let a = 1 // true
a = -1 // true
a = 0 // false
a = NaN // false
a = Infinity // true
a = 'abc' // true
a = 'true' // true
a = 'false' // true
a = '' // false
a = " " // true
a = null
a = undefined
console.log(typeof a, a)
a = Boolean(a)
console.log(typeof a, a)
</script>