1. 程式人生 > >【JS】----判斷資料型別的方法

【JS】----判斷資料型別的方法

對js中不同資料的布林值型別總結:false:空字串;null;undefined;0;NaN。
true:除了上面的false的情況其他都為true;

如下:

複製程式碼
var o = { 
          'name':'lee'
        };
var a = ['reg','blue'];
function checkBoolean(a){
         if(a){
              return true;
         }else{
              return false;
         }
 }
console.log(checkBoolean('')); //false
console.log(checkBoolean(0)); //false
console.log(checkBoolean(null)); //false
console.log(checkBoolean(undefined)); //false
console.log(checkBoolean(NaN)); //false
console.log(checkBoolean(a));//true
console.log(checkBoolean(c));//true
複製程式碼

javascript中有六種資料型別:string;boolean;Array;Object;null;undefined。如何檢測這些資料型別呢,總結方法如下:

方法一:採用typeof

複製程式碼
       var fn = function(n){
          console.log(n);
       }
       var str = 'string';
       var arr = [1,2,3];
       var obj = {
           a:123,
           b:456
       };
       var num = 1;
       var b = true;
       var n = null;       var u = undefined;
       //方法一使用typeof方法。
       console.log(typeof str);//string
       console.log(typeof arr);//object
       console.log(typeof obj);//object
       console.log(typeof num);//number
       console.log(typeof b);//boolean
       console.log(typeof n);//null是一個空的物件
       console.log(typeof u);//undefined
       console.log(typeof fn);//function
複製程式碼

通過上面的檢測我們發現typeof檢測的Array和Object的返回型別都是Object,因此用typeof是無法檢測出來陣列和物件的,採用方法二和方法三則可以檢測出來。

方法二:instanceof

複製程式碼
 var o = { 
           'name':'lee'
         };
 var a = ['reg','blue'];
 console.log(o instanceof Object);// true
 console.log(a instanceof Array);//  true
 console.log(o instanceof Array);//  false
複製程式碼

 注意:instaceof只可以用來判斷陣列和物件,不能判斷string和boolean型別,要判斷string和boolean型別需要採用方法四。
 由於陣列也屬於物件因此我們使用instanceof判斷一個數組是否為物件的時候結果也會是true。如:

console.log(a instanceof Object);//true。

下面封裝一個方法進行改進:

複製程式碼
var o = { 
          'name':'lee'
        };
var a = ['reg','blue'];
var getDataType = function(o){
            if(o instanceof Array){
                return 'Array'
            }else if( o instanceof Object ){
                return 'Object';
            }else{
                return 'param is no object type';
            }
       };
console.log(getDataType(o));//Object。
console.log(getDataType(a));//Array。
複製程式碼

方法三:使用constructor方法

var o = { 
           'name':'lee'
        };
var a = ['reg','blue'];
console.log(o.constructor == Object);//true
console.log(a.constructor == Array);//true

方法四:利用tostring()方法,這個方法是最佳的方案。

複製程式碼
var o = { 
          'name':'lee'
        };
var a = ['reg','blue'];
function c(name,age){
         this.name = name;
         this.age = age;
 }
var c = new c('kingw','27');
console.log(Object.prototype.toString.call(a));//[object Array]
console.log(Object.prototype.toString.call(o));//[Object Object]
console.log(Object.prototype.toString.call(c));//[Object Object]

//封裝一個方法判斷陣列和物件
function isType(obj){
       var type = Object.prototype.toString.call(obj);
       if(type == '[object Array]'){
              return 'Array';
        }else if(type == '[object Object]'){
              return "Object"
        }else{
              return 'param is no object type';
        }
}
console.log(isType(o));//Object
console.log(isType(a));//Array
複製程式碼

方法五:利用jquery的$.isPlainObject();$.isArray(obj);$.isFunction(obj)進行判斷。

 出處:http://www.cnblogs.com/xinggood

 

 

對js中不同資料的布林值型別總結:false:空字串;null;undefined;0;NaN。
true:除了上面的false的情況其他都為true;

如下:

複製程式碼
var o = { 
          'name':'lee'
        };
var a = ['reg','blue'];
function checkBoolean(a){
         if(a){
              return true;
         }else{
              return false;
         }
 }
console.log(checkBoolean('')); //false
console.log(checkBoolean(0)); //false
console.log(checkBoolean(null)); //false
console.log(checkBoolean(undefined)); //false
console.log(checkBoolean(NaN)); //false
console.log(checkBoolean(a));//true
console.log(checkBoolean(c));//true
複製程式碼

javascript中有六種資料型別:string;boolean;Array;Object;null;undefined。如何檢測這些資料型別呢,總結方法如下:

方法一:採用typeof

複製程式碼
       var fn = function(n){
          console.log(n);
       }
       var str = 'string';
       var arr = [1,2,3];
       var obj = {
           a:123,
           b:456
       };
       var num = 1;
       var b = true;
       var n = null;       var u = undefined;
       //方法一使用typeof方法。
       console.log(typeof str);//string
       console.log(typeof arr);//object
       console.log(typeof obj);//object
       console.log(typeof num);//number
       console.log(typeof b);//boolean
       console.log(typeof n);//null是一個空的物件
       console.log(typeof u);//undefined
       console.log(typeof fn);//function
複製程式碼

通過上面的檢測我們發現typeof檢測的Array和Object的返回型別都是Object,因此用typeof是無法檢測出來陣列和物件的,採用方法二和方法三則可以檢測出來。

方法二:instanceof

複製程式碼
 var o = { 
           'name':'lee'
         };
 var a = ['reg','blue'];
 console.log(o instanceof Object);// true
 console.log(a instanceof Array);//  true
 console.log(o instanceof Array);//  false
複製程式碼

 注意:instaceof只可以用來判斷陣列和物件,不能判斷string和boolean型別,要判斷string和boolean型別需要採用方法四。
 由於陣列也屬於物件因此我們使用instanceof判斷一個數組是否為物件的時候結果也會是true。如:

console.log(a instanceof Object);//true。

下面封裝一個方法進行改進:

複製程式碼
var o = { 
          'name':'lee'
        };
var a = ['reg','blue'];
var getDataType = function(o){
            if(o instanceof Array){
                return 'Array'
            }else if( o instanceof Object ){
                return 'Object';
            }else{
                return 'param is no object type';
            }
       };
console.log(getDataType(o));//Object。
console.log(getDataType(a));//Array。
複製程式碼

方法三:使用constructor方法

var o = { 
           'name':'lee'
        };
var a = ['reg','blue'];
console.log(o.constructor == Object);//true
console.log(a.constructor == Array);//true

方法四:利用tostring()方法,這個方法是最佳的方案。

複製程式碼
var o = { 
          'name':'lee'
        };
var a = ['reg','blue'];
function c(name,age){
         this.name = name;
         this.age = age;
 }
var c = new c('kingw','27');
console.log(Object.prototype.toString.call(a));//[object Array]
console.log(Object.prototype.toString.call(o));//[Object Object]
console.log(Object.prototype.toString.call(c));//[Object Object]

//封裝一個方法判斷陣列和物件
function isType(obj){
       var type = Object.prototype.toString.call(obj);
       if(type == '[object Array]'){
              return 'Array';
        }else if(type == '[object Object]'){
              return "Object"
        }else{
              return 'param is no object type';
        }
}
console.log(isType(o));//Object
console.log(isType(a));//Array
複製程式碼

方法五:利用jquery的$.isPlainObject();$.isArray(obj);$.isFunction(obj)進行判斷。

 出處:http://www.cnblogs.com/xinggood