# 判断数据类型和数组类型

# typeof

# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# instanceof/constructor

# instanceof/constructor可以判断数组和对象类型

//instanceof方法
var arr=[];
console.log(arr instance Array); //true

//constructor方法
var arr={};
console.log(arr.constructor==Object); //true
1
2
3
4
5
6
7

# Object.prototype.toString

# 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]
1
2
3
4
5
6
7