如何判断javascritp变量的类型?

在javascript变量的类型可以是以下这些:

  • 函数
  • 对象
  • 数组
  • 字符串
  • 数字
  • null

那么如何判断一个变量是什么类型呢?
我们可以用typeof来得到变量的类型,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//函数
var myFunction = function(){
console.log('hello');
};
//对象
var myObject = {
foo:'bar'
};
// 数组
var myArray = ['a','b','c'];
// 字符串
var myString = 'hello';
// 数字
var myNumber = 3;
console.log(typeof myFunction); // 输出function
console.log(typeof myObject); // 输出object
console.log(typeof myArray); // 输出object --careful!
console.log(typeof myString); // 输出string
console.log(typeof myNumber); // 输出number
console.log(typeof null); // 输出object--carefull!

注意到数组和null被判断成对象类型。

那么怎么判断一个被typeof判断对象的变量的类型,到底是对象,数组,还是null?

1.判断数组,可以用Array.isArray(arr)
2.判断null,可以用Var === null

可以判断变量的类型的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function whatType(v)
{
if(typeof(v) == 'object')
{
if(Array.isArray(arr)){
return 'array';
}
if(v === null)
{
return 'null';
}
return 'object'
}
}
arr = [];
obj = {};
n= null;
console.log(whatType(arr)); // array