javascript数据类型转换 强制转换与隐式转换
一.强制类型转换
转换字符串
1、toString() 与 String();
String()可以将任意值强制为string字符串;
toString() 只能转换boolean 与 number 类型;undinfined与 null类型会报错。
转换为Number
1、Number();
Number('123456') //123456 number类型
Number('hello123')
Number(''123hello“) // NaN number类型
Numbe(true) // 1 number
Number(false) // 0 number
Number(null) // 0 number
Number('')(空字符串) // 0 number
Number(' ')(空格字符串) // 0 number
Number(undefined) // NaN number
2、parseInt();
向下取整
第一位不是数字直接返回NaN
比如 paresInt(true) paresInt(false) paresInt(undefined) paresInt(null) 都为NaN 与 Number()方法不同
3、parseFloat();
与parseInt()方法相同,区别在于可以识别第一位小数点
转换为boolean
1.Boolean();
Boolean(123) // true 非零的数字都为true 包括负数 例如 Boolean(-1) // true
Boolean(0) // false
Boolean('123')
Boolean('hello')
Boolean('hello123')
Boolean(' ') // 非空字符串都为true
Boolean('') //false Boolean(undefined) //false
Boolean(null) //false
Boolean(NaN) //false
二.隐式类型转换
转换为String (+)
任何数据类型和字符串相加都是字符串的拼接操作,得到的结果也都是字符串。
转换为Number ( - * / % > < >= <= == !=)
console.log('35' - 34) //1 console.log('35' - '34') //1
console.log('35' * 2) //70
console.log('40' / '2') //20
console.log('35' % 2) //1
console.log('35' % '2') //1
console.log('5' - true) //4
console.log('5' - false) //0
console.log(true + null) //1
console.log(5 - undefined) //NaN 因为Undefined转为数字为NaN
console.log(5 - null) //NaN
console.log(44%('2a')) //NaN
console.log('5'>'3') //true 此处可能会以为转换为boolean 但其实是字符串5 和 3 先转换为数字 5 和 3,然后在比大小得到的true,中间涉及到了转换为数字。
console.log(true > false) //true 同上,先转化为1和0数字进行比较
console.log(false == 0) //true false先转为0 再与右边的0比较
//特殊 1
console.log(false == null) //false 这个稍微特殊,理论上都应该转换为0比较然后相等true,但实际是直接拿值比较,不会先转为为数字;
//特殊2 (+)
// +特殊在于 在和字符串相加中,都会变成字符串,但如果不和字符串相加时,可以进行正 常的隐式转换。 例如:
console.log(false + true) //1 false先转为0 true转为1 相加
console.log(false + null) //0
console.log(55 + true) //56 注意 '55'+true就变成字符串55+true了 结果为'55true'
//但是 +在某种情况下,也可以将字符转类型转为Number类型 例如:
console.log(+'50') //50 在这种情况下,输出为数字50
console.log(11 + +'50') //61 +与+之间有空格 先运行+'55' 转化为数字50,再与数字11相加
console.log(+true) // 1
转换为Boolean (!)
console.log(!34) //false
console.log(!!34) //true
console.log(!'abc') //fasle
console.log(!!'abc') //true
console.log(!null) //true
console.log(!undefined) //true
console.log(!NaN) //true
嫌弃格式不清楚的可以看此处的 有道云笔记