1. 程式人生 > >js如何判斷資料型別和陣列型別整理

js如何判斷資料型別和陣列型別整理

一、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]