当先锋百科网

首页 1 2 3 4 5 6 7
在Javascript中,变量类型的判断和输出是开发中经常遇到的问题,因为Javascript采用的是弱类型语言,变量的类型会因为赋值的不同而不断变化。接下来我们就来介绍一些输出变量类型的方法。
typeof方法
typeof方法可以判断变量的类型,返回值为字符串类型。当变量为基本数据类型(包括Number、String、Boolean、Undefined、Null、Symbol)时,typeof方法会返回相应的类型名称;当变量为对象或者函数时,typeof会返回object和function,但不会区分出具体类型。我们来看一个例子:


let a = 1;
console.log(typeof(a)); // 输出 number
console.log(typeof('hello')); // 输出 string
console.log(typeof(true)); // 输出 boolean
console.log(typeof(undefined)); // 输出 undefined
console.log(typeof(null)); // 输出 object
console.log(typeof({})); // 输出 object
console.log(typeof(function() {})); // 输出 function

instanceof方法
instanceof方法用于判断一个对象是否为某个类的实例。当对象是该类的实例时,返回true;否则返回false。instanceof只能用来判断对象是否为实例对象,不能用来判断基本数据类型。我们来看一个例子:


let a = new Array();
console.log(a instanceof Array); // 输出 true
console.log(a instanceof Object); // 输出 true
console.log('abc' instanceof String); // 输出 false
console.log(false instanceof Boolean); // 输出 false
console.log(123 instanceof Number); // 输出 false

Object.prototype.toString方法
Object.prototype.toString方法是Javascript中判断变量类型的最可靠方法,它返回一个格式为"[object 数据类型]"的字符串。其中数据类型包括Number、String、Boolean、Undefined、Null、Symbol、Function、Array、Date、RegExp等等。我们来看一个例子:


let a = [];
console.log(Object.prototype.toString.call(a)); // 输出 [object Array]
console.log(Object.prototype.toString.call('abc')); // 输出 [object String]
console.log(Object.prototype.toString.call(true)); // 输出 [object Boolean]
console.log(Object.prototype.toString.call(undefined)); // 输出 [object Undefined]
console.log(Object.prototype.toString.call(null)); // 输出 [object Null]
console.log(Object.prototype.toString.call({})); // 输出 [object Object]
console.log(Object.prototype.toString.call(function() {})); // 输出 [object Function]
console.log(Object.prototype.toString.call(new Date())); // 输出 [object Date]
console.log(Object.prototype.toString.call(/abc/g)); // 输出 [object RegExp]

总结
以上是Javascript中输出变量类型的三种方法,typeof方法适用于基本数据类型的判断,但无法区分具体类型;instanceof方法适用于判断对象是否为某个类的实例;Object.prototype.toString方法是最可靠的方法,适用于各种类型的判断。根据实际需求选择不同的方法可以更好地完成开发。