js如何判斷資料型別和陣列型別整理
阿新 • • 發佈:2019-01-03
一、typeof可以判斷部分資料型別
在 JavaScript 裡使用 typeof 來判斷資料型別,只能區分基本型別,即“number”,”string”,”undefined”,”boolean”,”object” 五種。
對於陣列、函式、物件來說,其關係錯綜複雜,使用 typeof 都會統一返回 “object” 字串。
var str="abc";
console.log(typeof(str)); //string
var num=123;
console.log(typeof(num)); //number
console.log(num instanceof Number)
var tr=false;
console.log(typeof(tr)); //boolean
var a;
console.log(typeof(a)); //undefind
//typeof無法區分null、陣列、物件型別,這三種用typeof都會返回object
如下面的例子:
var aa=null;
console.log(typeof(aa)); //object
var arr=[];
console.log(typeof(arr)); //object
var obj={}
console.log(typeof(obj)); //object
二、instanceof/constructor可以判斷陣列和物件型別
//instanceof方法
var arr=[];
console.log(arr instance Array); //true
//constructor方法
var arr={};
console.log(arr.constructor==Object); //true
三、Object.prototype.toString`判斷所有資料型別——簡單通用的方法
console.log(Object.prototype.toString.call(123)) //[object Number]
console.log(Object.prototype.toString.call('123')) //[object String]
console.log(Object.prototype.toString.call(undefined)) //[object Undefined]
console.log(Object.prototype.toString.call(true)) //[object Boolean]
console.log(Object.prototype.toString.call({})) //[object Object]
console.log(Object.prototype.toString.call([])) //[object Array]
console.log(Object.prototype.toString.call(function(){})) //[object Function]