JavaScript 判断变量类型

原创 卓卓亭亭兮 随笔 原生JavaScript 200阅读 2017-12-05 21:30:54 举报

JavaScript语言可以识别下面 6 种不同类型的值:

五种 原型 数据类型:
Boolean. 布尔值,true 和 false.
null. 一个表明 null 值的特殊关键字。 JavaScript 是大小写敏感的,因此 null 与 Null、NULL或其他变量完全不同。
undefined. 变量未定义时的属性。
Number. 表示数字,例如: 42 或者 3.14159。
String. 表示字符串,例如:"Howdy"
以及 Object 对象

其实 JavaScript 还有 function 和正则表达式,但它们不归属于 JavaScript 数据类型。

1、用 typeof 判断各种数据类型,有两种写法:typeof xxx , typeof(xxx)

   如下实例:

   [quote]typeof   2      输出   number

   typeof   null   输出   object

   typeof   {}    输出   object

   typeof    []    输出   object

   typeof   (/^[0-9]*$/)  输出    object

   typeof   (function(){})   输出  function

   typeof    undefined         输出  undefined

   typeof   '222'                 输出    string

   typeof  true                   输出     boolean[/quote]

由上可知,使用typeof 可以返回 number、string 、Boolean、undefined、function、object六种类型;
可以准确的判断出前面五种类型(number、string 、Boolean、undefined、function)。null 、{} 、 []
和正则表达式都会返回object。

2、用 Object.prototype.toString 判断各种数据类型

接下来我们就用到另外一个利器:Object.prototype.toString
这是对象的一个原生原型扩展函数,用来更精确的区分数据类型。

我们来试试这个玩儿意儿:

 [quote]var   gettype=Object.prototype.toString

 gettype.call('aaaa')        输出      [object String]

 gettype.call(2222)         输出      [object Number]

 gettype.call(true)          输出      [object Boolean]

 gettype.call(undefined)  输出      [object Undefined]

 gettype.call(null)                  输出   [object Null]

 gettype.call({})                   输出   [object Object]

 gettype.call([])                    输出   [object Array]

 gettype.call(function(){})     输出   [object Function]

 gettype.call(/^[0-9]*$/)     输出   [object RegExp][/quote]

遗憾的是 Object.prototype.toString 不兼容IE8及IE8以下的浏览器,我想说的是,我们作为 web 开发者,
是推动 web 发展的中坚力量,让那些老无赖浏览器见鬼去吧。

3、封装(基于从代码量和效率上考虑,我选择了两者的结合判断)

[quote]
var getTypeOf = function(v){
var t = typeof v;
if(t === "object"){
var s = Object.prototype.toString.call(v);
switch(s){
case "[object Null]":
t = "null";
break;

  case "[object Object]":
t = "object";
break;

  case "[object Array]":
t = "array";
break;

  case "[object RegExp]":
t = "regexp";
break;

  //no default;
}

}
return t;
}[/quote]

该函数接受一个参数 v,即要判断类型的变量名,返回值是代表变量类型的字符串。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复