js中数据类型的转换

在js中数据类型转换只有3种,转换的话分强制转换和自动转换,下面我来分别介绍下

1.转换为String类型
一.强制转换

1.Number类型和Boolean转string类型(调用toString()方法)

var a = 10,
    b = true;
    a.toString();//'10'
    b.toString();//'false'
    a.toString('2');//'1010'
    a.toString('8');//'12'
    a.toString('16');//'a'

采用 Number 类型的 toString() 方法的基模式,可以用不同的参数输出数字,例如二进制的参数是 2,八进制的参数是 8,十六进制的参数是 16!
2.null和underfined转string类型

var a = null,
    b = undefined;
    a.toString();//报错
    b.toString();//报错
    String(a);//null
    String(b);//underfined

null和underfined没有toString()方法所以会报错,它只能调用String()方法转成对应的字符串!
2.Object转string类型

var a = {p:1},
    b = [1,3,4];
    a.toString();//"[object Object]"
    b.toString();//"1,3,4"
    String(a);//"[object Object]"
    String(b);//"1,3,4"

2种结果都是一样的,所以可以总结一下,toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined!

二.自动转换

如果是字符串和任意类型相加的话,都会转成字符串类型然后拼接

console.log("2"+1);//"21"
console.log("2"+"1");//"21"
console.log("2"+null);//"2null"
console.log("2"+undefined);//"2underfined"
console.log("2"+{p:1});//"2[object Object]"
console.log("2"+[1,2,3]);//"21,2,3"
console.log("2"+function(){});//"2function(){}"
console.log("2"+true);//'2true'
2.转换为Boolean类型
一.强制转换

它的转换比较简单,你只要记住,除了“” “”,null,underfined,+0,-0,NaN转换为false,其他的转换都是true!

console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
console.log(Boolean(NaN));//false
console.log(Boolean(""));//false
console.log(Boolean(+0));//false
console.log(Boolean(-0));//false
console.log(Boolean({}));//true
console.log(Boolean([]));//true
console.log(Boolean(new Boolean(false)));//true
二.自动转换

1.当有if和elseif语句,会自动调用Boolean函数将其自动转换成布尔值!

var a =10;
if (a) {
    //....
}

2.当有逻辑运算符!或者!!情况下会自动转成布尔值!,!会先转成布尔值再取反,!!会先转成布尔值再取二次反,其实原理和调用Boolean函数一样


var a =10;
if (!a) {
    //....
};
if (!!a) {
    //....
}
3.转换为Number类型
一.强制转换

1.Number()函数

console.log(Number(123));//123
console.log(Number("123"));//123
console.log(Number("123abc"));//NaN
console.log(Number(null));//0
console.log(Number(undefined));//NaN
console.log(Number(""));//0
console.log(Number({p:1}));//NaN
console.log(Number([1,2,3]));//NaN
console.log(Number([1]));//1
console.log(Number(true));//1
console.log(Number(false));//0

可以得出结论:纯数字或者纯数字的字符串不用说了,如果有不是数字的字符串,对象除了单数字数组,underfined,NaN转完都是NaN,其他的可以先转成布尔值,true就是1,false是0!

2.parseInt()函数 和parseFloat()函数

console.log(parseInt(123));//123
console.log(parseInt("123"));//123
console.log(parseInt("123abc"));//123
console.log(parseInt("abc123"));//NaN
console.log(parseInt(""));//NaN
console.log(parseFloat("1.23"));//1.23
console.log(parseFloat("1.23abc"));//1.23
console.log(parseFloat("abc1.23"));//NaN
console.log(parseFloat(""));//NaN

可以得出结论:这两个函数只要首位不是数组都是NaN,Numer函数还是比它们严格多了,只要有一个字符无法转成数值,整个字符串就会被转为NaN,对于空字符串处理也不一样,Numer函数返回的是0!
parseInt()第二个参数和Number()函数原理类似,都是转换成对应的进制值,这里就不说了!

二.自动转换

1.字符串类型除了加,其他类型加减乘除都会自动转换成对应的数字类型!

console.log(1+true);//2
console.log(1-true);//0
console.log(1*null);//0
console.log("1"*2);//2
console.log(false / 1);//0
console.log("abc" / 1);//NaN
console.log(1*[]);//0

2.一元运算符
一元运算符有+,++,-,–等

var a =true;
    b=[];
console.log(+a);//1
console.log(-a);//-1
console.log(++a);//2
console.log(+b);//0
console.log(-b);//-0
console.log(++b);//1

一个+的话表示直接转换成数字类型,二个+的话表示直接转换成数字类型再加1,一个-表示转换成数字类型后加个负号,当然-0还是等于0,二个-的话表示直接转换成数字类型再减1!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值