📌  相关文章
📜  如何检查提供的值是否属于 JavaScript 中的指定类型?(1)

📅  最后修改于: 2023-12-03 15:24:50.702000             🧑  作者: Mango

如何检查提供的值是否属于 JavaScript 中的指定类型?

在编写 JavaScript 代码时,有时我们需要检查一个值的类型,以确保它符合我们的预期要求。为了实现这一点,可以使用一些内置的函数和操作符,使我们能够轻松地确定某个值是否属于指定类型。在本篇文章中,我们将介绍一些常见的用于检查值类型的方法。

typeof 操作符

typeof 操作符是 JavaScript 中用于检查值类型的最基本的方式之一。它返回一个字符串,表示操作数的数据类型。

console.log(typeof "hello"); // string
console.log(typeof 42); // number
console.log(typeof true); // boolean
console.log(typeof undefined); // undefined
console.log(typeof null); // object
console.log(typeof {}); // object
console.log(typeof []); // object
console.log(typeof function() {}); // function

需要注意的是,typeof 操作符返回的结果对于 null 值是 'object',这是一个 JavaScript 的历史遗留问题。同时,typeof {} 和 typeof [] 也都返回 'object',这是因为在 JavaScript 中,对象既可以是普通对象,也可以是数组对象。

instanceof 操作符

instanceof 操作符用于判断一个对象是否属于某个类型。它的使用方法为:对象 instanceof 类型。

console.log("hello" instanceof String); // false
console.log(new String("hello") instanceof String); // true
console.log(42 instanceof Number); // false
console.log(new Number(42) instanceof Number); // true
console.log(true instanceof Boolean); // false
console.log(new Boolean(true) instanceof Boolean); // true
console.log([] instanceof Array); // true
console.log({} instanceof Object); // true
console.log(function() {} instanceof Function); // true

需要注意的是,instanceof 操作符只对对象类型有效。

Object.prototype.toString.call() 方法

Object.prototype.toString.call() 方法可以返回指定对象的字符串表示,常常用于获取一个值的类型信息。

console.log(Object.prototype.toString.call("hello")); // [object String]
console.log(Object.prototype.toString.call(42)); // [object Number]
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([])); // [object Array]
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(/regex/)); // [object RegExp]

需要注意的是,Object.prototype.toString.call() 方法对于不同类型的对象返回值是不同的,因此可以用来检查值的类型。

这些是在 JavaScript 中检查值类型的几种方法。在实际程序开发中,我们可以根据具体的需求选择适合的方法进行值类型检查。