文章目录
暂不讨论Object
数据类型转换指将一个数据类型强制转换为其他数据类型。
类型转换主要指将 其他的数据类型 转换为 String , Number, Boolean 类型
其他数据类型转换为 String 类型:
调用 toString()方法
toString()方法不会影响原数据,返回一个新数据
Number 类型的 toString() 方法两种模式,即默认模式和基模式。
null和undefined没有toString方法,调用时会报错。
var a = 0.01;
console.log(typeof a); //number
// a.toString(); 这样写的话不会转换成功
a = a.toString();
console.log(a); //0.01
console.log(typeof a); //string
var iNum = 10;
alert(iNum.toString(2)); // "1010"
alert(iNum.toString(8)); // "12"
alert(iNum.toString(16)); // "A"
var iNum1 = 10;
var iNum2 = 10.0;
alert(iNum1.toString()); // "10"
alert(iNum2.toString()); // "10"
调用String()函数,将要转换的数据作为参数传入
String()函数不会影响原数据,返回一个新数据
对于Boolean和Number,调用toString()方法
对于null和undefined,分别返回“null”和“undefined”的字符串形式
var b = true;
b = String(b);
console.log(typeof b); //string
b = null;
b = String(b);
console.log(typeof b); //string
使用 + 操作符
是一种隐式转换,由浏览器完成,实际上是使用了String()函数。
console.log(undefined + ""); //"undefined"
console.log(1 + ""); //"1"
其他数据类型转换为 Number类型:
有很多种情况,纯数字的字符串,完全没有数字的字符串,以数字开头的不是纯数字的字符串,不是以数字开头的不是纯数字的字符串,true,false,null,undefined等等等等。
使用Number函数
- 空字符串
转换为0
var a = Number("");
var b = Number(" 1");
var c = Number(" ");
console.log(a,typeof a); //0 number
console.log(b,typeof b); //1 number
console.log(c, typeof c); //0 number
- 纯数字字符串转为数字:
不管是整数,还是浮点数,都能正确转换
// 纯数字的字符串
var a = Number("123.456");
console.log(a); //123.456
console.log(typeof a); //number
var b = Number("123");
console.log(b); //123
console.log(typeof b); //number
- 完全没有数字的字符串转为数字:
转换为NaN
// 完全没有数字的字符串
var a = Number("adb.c%");
var b = Number("$%^*)(");
var c = Number(" w12");
console.log(a); //NaN
console.log(b); //NaN
console.log(c); //NaN
console.log(typeof a); //number
console.log(typeof b); //number
- 以数字开头的不是纯数字的字符串:
转换为NaN
注意,c不是一个数字,因为一个数字只能有一个小数点。
// 以数字开头的不是纯数字的字符串
var a = Number("123.0adg");
var b = Number("123.456asd");
var c = Number("456.123.2");
console.log(a,b,c); //NaN NaN NaN
- 不是数字开头的不是纯数字的字符串:
可以预见,也是转换为NaN
var a = Number(".adg123");
var b = Number("asd123.456");
var c = Number("uio.123");
console.log(a,b,c); //NaN NaN NaN
-
true和false:
true:转换为1
false:转换为0
-
null 和 undefined:
null:0
undefined: NaN
var a = Number(undefined);
var b = Number(null)
console.log(a,typeof a) //NaN number
console.log(b,typeof b) //0 number
使用parseInt() 和parseFloat()函数转为Number
parseInt():将一串字符串从左到右解析,直到找到一个字符是无效数字为止,小数点也是无效数字。
parseFloat():将一串字符串从左到右解析,直到找到一个字符是无效数字为止,第一个小数点是有效的,第二个小数点是无效数字。
parseInt() 方法有基模式,parseFloat()则没有。
对于parseInt(“010”),有的浏览器会当成10进制去解析,有的会当成八进制解析,最好采用基模式
console.log(parseInt("12345red")); //12345
console.log(parseInt("0xA")); //10
console.log(parseInt("56.9")); //56
console.log(parseInt("")); //NaN
console.log(parseInt("010"), parseInt("010",8), parseInt("010",10)); //10 8 10
//对于parseInt("010"),有的浏览器会当成10进制去解析,有的会当成八进制解析,最好采用基模式
console.log(parseFloat("12345red")); // 12345
console.log(parseFloat("0xA")); // 0
console.log(parseFloat("11.2")); // 11.2
console.log(parseFloat("11.22.33")); // 11.22
console.log(parseFloat("0102")); // 102
console.log(parseFloat("red")); // NaN
console.log(parseFloat(" ")); // NaN
总结:
1.使用Number函数
- 纯数字的字符串转为对应数字
- 非纯数字的字符串转为NaN
- 空串或者全是空格的字符串,转换为0
- true转为 1,false 转为 0
- null转为0,undefined:转为NaN
2.parseInt()
3.parseFloat()
4.隐式的转换:A-0,A/1,A*1 ,+A(一元运算符的加号)
相当于调用了Number()函数
其他数据类型转换为 Boolean类型:
Boolean()函数
总的规则:
- 除了空字符串,其余都是true
- 除了0 和NaN,其余都是true
- null和undefined,转为false
- 对象转换为true
var a = ""; //false
var b = " "; //true
var c = 0; //false
var d = 1; //true
var e = "0"; //true
var f = "1p"; //true
var g = "eee"; //true
var h = true; //true
var i = Infinity; //true
var j = NaN; //false
var k = {}; //true
var l = null; //false
var m = undefined; //false
console.log(Boolean(a), Boolean(b), Boolean(c), Boolean(d), Boolean(e),
Boolean(f), Boolean(g),Boolean(h), Boolean(i), Boolean(j), Boolean(k), Boolean(l), Boolean(m));