數(shù)據類型分為:
基本數(shù)據類型: Number, String, Boolean, Symbol(es6新增), Null, Undefined
引用數(shù)據類型: Object, Function
判斷數(shù)據類型的方法:
var a = 1;
var b = '1';
var c = true;
var d = Symbol("kk");
var e = {a: 1};
var f = function(){};
var g = null;
var h = undefined;
typeof: 常用于對基本數(shù)據類型進行判斷茧妒,返回結果: number, boolean, string, symbol, object, function
typeof(a); // 'number'
typeof(b); // 'string'
typeof(c); // 'boolean'
typeof(d); // 'symbol'
typeof(e); // 'object'
typeof(f); // 'function'
typeof(g); // ------------ 'object', js中二進制前三位為0的話會被判斷為object類型操漠,而null的二進制都是0
typeof(h); // ----------------'undefined'
instanceof: 常用于檢測引用類型,基本數(shù)據類型無法檢測出他們的類型 返回結果: true false
a instanceof Number // false
b instanceof String // false
c instanceof Boolean // false
d instanceof Symbol // false
e instanceof Object // true
f instanceof Function // true
g instanceof Object // false
f instanceof Object // false
constructor: 常用于查看對象的構造函數(shù)
a.constructor == Number // true
b.constructor == String // true
c.constructor == Boolean // true
d.constructor == Symbol // true
e.constructor == Object // true
f.constructor == Function // true
g.constructor == Object // 報錯, 因為null和undefined是無效的對象
h.constructor == Object // 報錯, 因為null和undefined是無效的對象
Object.prototype.toString: 萬能判斷
Object.prototype.toString.call(a) // '[object Number]'
Object.prototype.toString.call(b) // '[object String]'
Object.prototype.toString.call(c) // '[object Boolean]'
Object.prototype.toString.call(d) // '[object Symbol]'
Object.prototype.toString.call(e) // '[object Object]'
Object.prototype.toString.call(f) // '[object Function]'
Object.prototype.toString.call(g) // '[object Null]'
Object.prototype.toString.call(h) // '[object Undefined]'