一、什么是数据类型转换
使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变
量的数据类型。通俗来说,就是把一种数据类型的变量转换成另外一种数据类型。
我们通常会实现3种方式的转换:
- 转换为字符串类型
- 转换为数字型
- 转换为布尔型
二、其他类型转换成字符串类型
方式 | 说明 | 例子 |
---|---|---|
toString() | 转成字符串 | var num=1; alert(num.toString(); |
String()强制转换 | 转成字符串 | var num=1; alert(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num=1; alert(num+“我是字符串”) |
- toString() 和 String() 使用方式不一样。
- 三种转换方式,我们更喜欢用第三种加号拼接字符串转换方式, 这一种方式也称之为隐式转换。
三、其他类型转数字类型
方式 | 说明 | 例子 |
---|---|---|
parselnt(string)函数 | 将string类型转成浮点数数值型 | parselnt(78’) |
parseFloat(string)函数 | 将string类型转成浮点数数值型 | parseFloat(78.21’) |
Number()强制转换函数 | 将string类型转换为数值型 | Number('12) |
js 隐式转换(-* /) | 利用算术运算隐式转换为数值型 | ‘12’-0 |
注意
- parseInt 和 parseFloat 单词的大小写,这2个是重点
- 隐式转换是我们在进行算数运算的时候,JS 自动转换了数据类型
1.parseInt()转换
var a = 1
var b = '112'
var c = '吮指原味鸡不要鸡腿'
var d = ''
var e = '112吮指原味鸡不要鸡腿'
var f = '吮指原味鸡不要鸡腿112'
var g = 'true'
var h= 'false'
var i = true
var j = false
var k = undefined
var l =null
var m = 1.123
console.log(parseInt(a)) //1
console.log(parseInt(b)) //112
console.log(parseInt(c)) //NaN
console.log(parseInt(d)) //NaN
console.log(parseInt(e)) //112
console.log(parseInt(f)) //NaN
console.log(parseInt(g)) //NaN
console.log(parseInt(h)) //NaN
console.log(parseInt(i)) //NaN
console.log(parseInt(k)) //NaN
console.log(parseInt(l)) //NaN
console.log(parseInt(m)) //1
parseInt()是将数据类型转换为数字类型,它是从左往右开始转换,知道遇到不是数字的字符。数字还是数字,但是小数类型的只去整数,它不能识别小数点,不能转为数字的字符都变成了NaN, not a number。
综上:只去字符串前缀是数字的部分。
2.parseFloat()转换
var a = 1
var b = '112'
var c = '吮指原味鸡不要鸡腿'
var d = ''
var e = '112吮指原味鸡不要鸡腿'
var f = '吮指原味鸡不要鸡腿112'
var g = 'true'
var h= 'false'
var i = true
var j = false
var k = undefined
var l = null
var m = 1.123
console.log(parseFloat(a)) //1
console.log(parseFloat(b)) //112
console.log(parseFloat(c)) //NaN
console.log(parseFloat(d)) //NaN
console.log(parseFloat(e)) //112
console.log(parseFloat(f)) //NaN
console.log(parseFloat(g)) //NaN
console.log(parseFloat(h)) //NaN
console.log(parseFloat(i)) //NaN
console.log(parseFloat(k)) //NaN
console.log(parseFloat(l)) //NaN
console.log(parseFloat(m)) //1.123
综上,parseFloat和parseInt差不多,只是parseFloat能识别小数点。
3.Number转换
var a = 1
var c = '吮指原味鸡不要鸡腿'
var d = ''
var g = 'true'
var h= 'false'
var i = true
var j = false
var k = undefined
var l =null
var m = 1.123
var n = {}
var o ={name:"qq"}
var p =[]
var q = [1,3,4]
var r = 0
var s ='0'
console.log(Number(a))//数字还是数字
console.log(Number(c))//非空数字字符串变成了NaN
console.log(Number(d))//空字符串是0
console.log(Number(g))//NaN
console.log(Number(h))//NaN
console.log(Number(i))//true是1
console.log(Number(j))//false是0
console.log(Number(k))//undefined是NaN
console.log(Number(l))//null是0
console.log(Number(m))//小数还是原来的
console.log(Number(n))//空对象是NaN
console.log(Number(o))//非空对象是NaN
console.log(Number(p))//空数组是0
console.log(Number(q))//非空数组是NaN
console.log(Number(r))//数字0是0
console.log(Number(s))//字符串0是0
综上:数字类型的转换,还是原来的。非纯数字字符串转数字,都是NaN,数字类型的字符串会变成数字,true是1,false是0,null是0,undefined是NaN,引用类型中空数组是0,其他是NaN
四、其他类型转布尔类型
方式 | 说明 | 例子 |
---|---|---|
Boolean()函数 | 其他类型转布尔类型 | Boolean(‘true’) |
- 代表空、否定的值会被转换为 false ,如 ‘’、0、NaN、null、undefined
- 其余值都会被转换为 true
boolean转换
var a = 1
var c = '吮指原味鸡不要鸡腿'
var d = ''
var g = 'true'
var h= 'false'
var i = true
var j = false
var k = undefined
var l =null
var m = 1.123
var n = {}
var o ={name:"qq"}
var p =[]
var q = [1,3,4]
var r = 0
var s ='0'
console.log(Boolean(a))//非0数字为true
console.log(Boolean(c))//非空字符串为true
console.log(Boolean(d))//空字符为false
console.log(Boolean(g))//true字符串为true
console.log(Boolean(h))//false字符串为true
console.log(Boolean(i))//boolean类型的true就是true
console.log(Boolean(j))//boolean类型的false就是false
console.log(Boolean(k))//undefined就是false
console.log(Boolean(l))//null就是false
console.log(Boolean(m))//小数也是true
console.log(Boolean(n))//空对象也为true
console.log(Boolean(o))//不为空的对象是true
console.log(Boolean(p))//空数组为true
console.log(Boolean(q))//非空数组也为true
console.log(Boolean(r))//数字0是false
console.log(Boolean(s))//字符串0也是true
console.log(Boolean(NaN)); // false
综上:在转boolean时,数字类型中,只有0是false,
字符串都是true,undefined是false,null也是false,引用类型都是true。
在判断语句中,都隐式的进行了一个boolean的转换。可以根据这个来看。