1. JavaScript数据类型分为基本数据类型和引用数据类型
基本数据类型:字符串(String)、数字(Number)、布尔(Boolean)、空对象(Null)、未定义(Undefined)、独一无二(Symbol,es6引入)
引用数据类型:对象(Object)、数组(Array)、函数(Function)
2. Null 和 Underfined 区别
Null:指空对象,没有值,Number(null) 输出0。用于释放一个变量引用的对象,变量不再指向对象地址,延伸至垃圾回收站。可以理解为已有值的变量清空值,如:例如:var emps = ['ss','nn','ff'];emps = null; //释放指向数组的引用
Undefined:指变量声明过但是未赋值过,Number(undefined) 输出NaN。可以理解未用于定义一个未赋值的变量默认值。如:var name; //name自动被赋值为undefined
3. 数据类型判断
数据类型判断有四种方式:typeof、instanceof、constructor、Object.prototype.toString.call()
typeof:检测不出 null、数组,结果都为 object ,所以适用于除了 Null 、Array 类型检测。如:typeof (123) 输出 "number"
instanceof:不能检测基本数据类型,判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型,引用类型的数据则可以直接进行判断,但是 Null 和 Underfined 没办法转成对象。如:
var name=1;name instanceof Number; //false
var name=Number(1);name instanceof Number 或 new Number(1) instanceof Number; // true
var arr1=[1,2,3,4];arr1 instanceof Array; //true
constructor:只能对已有变量进行判断,不能检测 null,undefined,null,undefined不是构造器。如:console.log((2).constructor === Number); // true
Object.prototype.toString.call():所有类型都能检测,如:console.log(Object.prototype.toString.call(undefined)); // "[object Underfined]"