js数据类型,类型检测,类型转换
数据类型
值类型/基本数据类型(7种):
Number、String、Boolean、Null、 Undefined、Symbol(ES6),BigInt(ES11)这些类型可以直接操作保存在变量中的实际值。
对象类型/引用数据类型:
标准普通对象:Object
标准特殊对象:Array、RegExp、Date、Math、Error…
非标准特殊对象:Number、String、Boolean…
可调用对象:Function
基本数据类型和引用数据类型的区别:
基本数据类型:
基本数据类型是指存放在栈(stack)中的简单数据段。
数据大小固定。占用空间小。按值存放,按值访问。
var a = 10;
var b = a; //把a的值赋值给b
b=20;
console.log(a); //10
console.log(b);//20
a的值为一个基本类型,是存储在栈中。将a的值赋给b,虽然两个变量的值相等,但是两个变量保存了两个不同的内存地址
引用数据类型:
引用类型是存放在堆(heap)内存中的对象。
数据大小不固定。占据空间大。
栈中存放的是一个指针,该指针指向堆中该实体起始地址
var obj1 = {};
var obj2 = obj1;
obj2.name = 'abc';
console.log(obj1.name); //'abc'
Boolean类型
布尔类型,该类型只有两个值,true和false。主要用来做逻辑判断
特点:
特点:1.隐式转换:true会转换成1,false会转换成0。1 + true; // 2 true会被隐式转化为12.0; -0;0n;NaN; null; undefined;‘’,“”,``都会转换成false。
Null类型
空指针对象,只有一个值。null类型也是空的对象引用。
特点:1.typeof检测, null 值时会返回 object。typeof null; //object2.undefined值派生自null值。出现场景:对象不存在时。undefined==null; //true