lxq.link
postscategoriestoolsabout

JS 的数据类型和类型判断

数据类型

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

类型判断

在使用 typeof 来判断数据类型的时候,除了object,null 和 array 也会被判定为 "object"。所以,使用typeof 来判断数据类型,会和预想的结果有一些出入。

更准确的方式是用 Object.prototype.toString.call() 来判断:

console.log(Object.prototype.toString.call("abc")) 
// "[object String]"

console.log(Object.prototype.toString.call(1))
// "[object Number]"

console.log(Object.prototype.toString.call({a:1}))
// "[object Object]"

console.log(Object.prototype.toString.call([1,2,3,4,5]))
// "[object Array]"

console.log(Object.prototype.toString.call(function(){}))
// "[object Function]"

console.log(Object.prototype.toString.call(true))
// "[object Boolean]"

console.log(Object.prototype.toString.call(null))
// "[object Null]"

console.log(Object.prototype.toString.call(undefined))
// "[object Undefined]"

console.log(Object.prototype.toString.call(/a/))
// "[object RegExp]"

console.log(Object.prototype.toString.call(new Date))
// "[object Date]"

console.log(Object.prototype.toString.call(new function(){}))
// "[object Object]"
2019-07-05