数据类型
js中的数据类型
- 基本类型:String,Number, Boolean, undefined, null,Symbol(es6新增),BigInt(大整数 es6新增)
- 引用类型:Object (包括Funtion,Array,Date, Math等)
如何判断数据类型
显示转换
- 转字符串
- toString(). null和underfined不可以使用toString();所以使用此方式需要对字符串做非空判断
- String() 可以转null和underfined
let a = 123;
a.toString(); // '123'
String(a); // '123'
true.toString(); // 'true'
String(null); // 'null'
- 转number:
- parseInt(): 转整型 只能把字符串或数值转换为数值。
- parseFloat(): 转浮点 只能把字符串或数值转换为数值。
- Number(): 可以把任何类型的数据转换为数值
Number('4a')// NaN
parseInt('aa4')// NaN
parseInt('4a') // 4
Number(true); // 1
隐式转换
// 两边都是数字是就是正常的加法运算
1 + 1 = 2;
// 两边都是字符串时,就是字符串的拼接
'aa'+ 'bb' // 'aabb'
// 两边是不同数据类型时
1 + '2a' // '12a' // 一边数字一边字符串时 会转成字符串拼接
true + 1 // 2 布尔加字符串会将布尔true转成1 false转成0
true + 'aa' // 'trueaa'
-
== 与 ===
- == 如果等号两边的数据类型不相同,会先进行隐式转换后,再进行比较
// string == number string将会转化成number去作比较
"42" == 42 // true 42 == 42
// 其他类型 == Boolean boolean值将首先转化成number类型, 0或者1. 然后再进行比较
"42" == true // false "42" == 1 ---> 42 == 1
null == undefined // true 除了这一对外, 其他的值和他们比都返回false
// 引用类型 == 基本类型 首先将引用类型转换成基本类型
[] == ![]; // true [] == false --> [] == 0 --> "" == 0 --> 0 == 0
2 == [2]; // true 2 == "2" --> 2 == 2
"" == [null]; // true "" == "" (ps: String([null]) === ""; String(null) === "null")
"0" == false; // true "0" == 0 --> 0 == 0
false == 0; // true 0 == 0
false == ""; // true 0 == "" --> 0 == 0
false == []; // true 0 == [] --> 0 == "" --> 0 == 0
"" == 0; // true 0 == 0
"" == []; // true "" == ""
0 == []; // true 0 == "" --> 0 == 0
在js中只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false
- === 不仅比较值,还要比较数据类型
"42" === 42 // false