js中如何判断一个变量的数据类型?

234 阅读1分钟

js中的变量类型?

在js中,ES5规定的变量类型有6种数据类型,分别是基本类型 string、number、boolean、undefined、null和引用类型object,其中引用类型又分为 Array、Object、Function、Date、RegExp,判断基本类型的方法通常是 typeof,判断引用类型通常使用constructor、instanceof、Object.prototype.toString.call()

判断变量类型的具体写法

typeof用法:
    var a = 1;
    console.log(typeof a)                                            //number
    var b = "hello";
    console.log(typeof b)                                            //string
    var c = [];
    console.log(typeof c)                                            //object
    var d = {};
    console.log(typeof d)                                            //object
    
instanceof用法
    var A = [];
    console.log(A instanceof Array)                                  //true
    var B = {};
    console.log(B instanceof Object)                                 //true
    var C = /a/;
    console.log(C instanceof RegExp)                                 //true
    
constructor用法
    var aa = [];
    console.log(aa.constructor == Array);                            //true
    var bb = {};
    console.log(bb.constructor == Object);                           //true	
    var cc = 1;
    console.log(cc.constructor == Number);                           //true	
    var dd = "hello";  
    console.log(dd);
    console.log(dd.constructor == String); //true
    
Object.prototype.toString.call()用法
    var a = [];
    Object.prototype.toString.call(a) === '[object Array]';          //true
    var b = {};
    Object.prototype.toString.call(b) === '[object Object]';         //true
    var c = 'hello';
    Object.prototype.toString.call(c) === '[object String]';         //true
    var d = 1;
    Object.prototype.toString.call(d) === '[object Number]';         //true

js中几个特殊变量判断

null和undefined的区别?

null代表空指针,也可以称为空对象,undefined表示变量初始化后未赋值,常常用来表示变量初始化,typeof null 返回的是“object”,

nullundefined不严格相等
null == undefined  // true

函数类型可以直接使用typeof判断
var a = function(){};
typeof a === 'function';