WEB前端

JavaScript 判断变量类型

位置:首页 > WEB前端 > js教程,2017-12-06 10:38
JavaScript语言可以识别下面 6 种不同类型的值:五种 原型 数据类型:Boolean. 布尔值,true 和 false.null. 一个表明 nu

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)

       如下实例:

      
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

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

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

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

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

     
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]

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

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

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;
}

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


TAGS:JavaScript 变量类型

上编:高性能 javaScript 之事件委托

下编:没有了



猜你喜欢


NewHot手机版