JavaScript — 数据类型转换
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对 空(Null)、未定义(Undefined)、Symbol。
注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
1、typeof 判断数据类型
typeof 数据 //返回数据的类型
例如:
type "aaa" //返回string,得到string
var a;
console.log(typeof a); //因为没有赋值,所以它是undefined
var b=null
console.log(typeof b); //b的类型是object
2、强制转换
String(数据) 强制转换为字符串
- 主动将数据的类型强制转换为某种类型。
- 数据.toString(进制) 强制转换为字符串。
- null和undefined是不能转换的。
- toString可以将任何数字转换为任意进制,进制必须大于等于2并且小于等于36也就是最小是2进制,最大是36进制,因为数字字母就36个。
- toFixed(小数点后几位) 将数值转换为字符串,并且按照小数点四舍五入保留位数 。
- 任何数据都需要转换为二进制,但是原生js二进制小数转换以后恢复到数值时,是有误差的
var num=null;
var a=String(num); //转换成字符串类型
console.log(a);//打印a
console.log(typeof num);//检测num的数据类型为object
console.log(typeof a);//检测a的数据类型为string
var num=10;//num是一个数值型
var a=num.toString(2);//转换成字符串二进制
console.log(a);//打印a的结果
console.log(typeof num);//检测num的数据类型为number
console.log(typeof a);//检测a的数据类型为string
Number(数据) 强制转换为数值
- NaN 非数值 类型是number
- 纯字符—> NaN
- 纯数字—> 数字
- 部分数字,部分字符—> NaN
- 布尔值—> 数字 true—> 1 false—> 0
- undefined—>NaN
- null—>0
var str="你好";//纯字符 NaN
var str="12";//数字12
var str="1a";//NaN
var num=Number(str);//转换成数值型
console.log(num);
// 布尔值
var b=false;
var num=Number(b);
console.log(num);//0
var a;//undefined--->NaN
var a=null;//null--->0
var num=Number(a);
console.log(num);
parseInt(字符,进制) 强转为整数
- 可以将指定进制方式字符串转换为10进制数值,是toString()逆转换
- 通过parseInt转换数值可以从开始转换到字符前为止变成数值,如果第一位是字符,返回NaN
- 布尔值强转数值整型,会变成NaN
- undefined—>NaN
- null—>NaN
- 纯字符—> NaN
- 纯数字—>数字
- parseFloat(); 强转小数和parseInt类似,只不过可以保留小数位
//var str="你好";//结果为NaN
//var str = "20";//结果为数字20
//var str = "1010";//转换为2进制为数字10
//var str = false;//结果为NaN
//var str = true;//结果为NaN
//var str;//结果为NaN
//var str = null;//结果为NaN
//var str = 20.545;//结果为20
var num = parseInt(str);
console.log(num);
Boolean(数据) 转换为布尔值
- “”,0,false,undefined,null,NaN 转换为布尔值都会变成false,除此之外转换都是true
//var str = "";//结果为false
//var str = null;//结果为false
//var str;//结果为false
//var str = 0;//结果为false
//var str = false;//结果为false
//var str = NaN;//结果为false
var num = Boolean(str);
console.log(num);
注意:
隐式转换
当数据类型不相同时,做数据的运算,就会自动将两端的数据转换为相同类型然后运算,这是隐式转换。
隐式转换遵从与 String() 、Number() 、Boolean()。