ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值。
基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象。在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。
5 种基本数据类型:Undefined、Null、Boolean、Number 和 String。这 5 种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值。
引用类型的值是保存在内存中的对象。与其他语言不同,JavaScript 不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。为此,引用类型的值是按引用访问的。如:Object、Array、Function、RegExp、Date。
使用typeof检测类型,var s = "Nicholas"; var b = true; var i = 22; var u; var n = null; var o = new Object(); alert(typeof s); //string alert(typeof b); //boolean alert(typeof i); //number alert(typeof u); //undefined alert(typeof n); //object alert(typeof o); //object
可以使用Object原型toString方法查看数据类型,
const typeList = [ "Array", "Object", "String", "Number", "Undefined", "Null", "Function" ] const typeObj = {} typeList.forEach(type => { typeObj[`is${type}`] = v => Object.prototype.toString.call(v) === `[object ${type}]` })
可抛出校验函数 isArray, isObject, isString, isNumber...等方法。