为什么要数据转换?
编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。 为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。
通俗来讲就是 , 因为数据类型不一样, 得不到自己预想的数据.
1. 隐式转换
隐式转换 : 当运算符两边的 ‘数据类型不一致’ 的时候,编译器会转成一致后运算
(1)转换数字 : 算术运算符 + - * / %
(2)转换字符串 : 连接符+ (+号两边只要有一边是字符串,此时+就是连接符)
(3)转换布尔: 逻辑非 !
2. 显式转换
2.1 其他类型转number
字符串转number
转整数: parseInt(数据)
转小数: parseFloat(数据)
非字符串类型转number(
console.log(Number(true))
console.log(Number(false))
console.log(Number(undefined))
console.log(Number(null))
2.2其他类型转string
- 1 String(数据) 2 变量名.toString()
2.3 其他类型转boolean
1.false: 有7种数据会得到false
0 -0 NaN undefined null '' false
2.true: 除false 7种之外的一切数据
console.log( Boolean(0) )//false
console.log( Boolean(-0) )//false
console.log( Boolean(NaN) )//false
console.log( Boolean(undefined) )//false
console.log( Boolean(null) )//false
console.log( Boolean('') )//false
console.log( Boolean(false) )//false
***number类型特殊值NaN
1. NaN : number类型的特殊值
/not a number : 不是一个数字。 如果你的数学运算得不到一个数字,则会得到NaN
NaN含义 : 表示的是错误的运算,出现NaN一般就是代码有bug
2. NaN不能参与任何运算,结果一律是NaN
console.log( NaN + 1)// NaN
console.log( NaN * 0 )// NaN
***undefined与null区别
1. undefined : 未定义。 变量有声明,未赋值,此时变量的默认值就是undefined
* 说人话 : undefined就像期房 : 买了房,但是房子还没有建 (没有值)
2. null : 空值。 变量有赋值,值为空
* 说人话 : null就像毛坯房 : 买了房,房子有建,但是里面是空的 (有值,只不过是空值)
undefined和null共同点 : 值相等, 转布尔类型都是false
console.log( undefined == null )//true
console.log( Boolean(undefined) )//false
console.log( Boolean(null) )//false
undefined和null不同点 : 数据类型不同, 转number类型值不同
console.log( undefined === null )//false
console.log( Number(undefined) )//NaN
console.log( Number(null) )//0
你学会了吗????