# 判断数据类型和数组类型
# 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
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
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
2
3
4
5
6
7