📜  检查javascript中的数据类型(1)

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

检查JavaScript中的数据类型

JavaScript中有7种数据类型,它们分别是:Number、String、Boolean、Undefined、Null、Object、Symbol。

在编写JavaScript代码时,我们经常需要检查变量的数据类型。以下是常用的检查JavaScript中数据类型的方法:

typeof 操作符

typeof操作符可以返回一个变量的数据类型,它的语法如下:

typeof variable

例如:

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

需要注意的是,typeof null的返回值为"object",这是一个历史遗留问题。因此,判断数据类型时需要特别注意。

instanceof 操作符

instanceof操作符可以检查一个对象实例是否属于某个类,它的语法如下:

object instanceof constructor

其中,object是要检查的对象实例,constructor是类的构造函数。

例如:

var arr = [];
var date = new Date();
console.log(arr instanceof Array);   // true
console.log(arr instanceof Object);  // true
console.log(date instanceof Date);   // true
console.log(date instanceof Object); // true

需要注意的是,instanceof操作符只能检查对象实例,不能检查基本类型。

Object.prototype.toString 方法

Object.prototype.toString方法可以返回一个变量的数据类型,它的语法如下:

Object.prototype.toString.call(variable)

例如:

Object.prototype.toString.call(42)            // "[object Number]"
Object.prototype.toString.call("hello")       // "[object String]"
Object.prototype.toString.call(true)          // "[object Boolean]"
Object.prototype.toString.call(undefined)    // "[object Undefined]"
Object.prototype.toString.call(null)         // "[object Null]"
Object.prototype.toString.call({})           // "[object Object]"
Object.prototype.toString.call([])           // "[object Array]"
Object.prototype.toString.call(function(){}) // "[object Function]"

需要注意的是,Object.prototype.toString方法返回的字符串中包含了"[object xxx]",其中"xxx"就是变量的数据类型。

Array.isArray 方法

Array.isArray方法用于检查一个值是否为数组,它的语法如下:

Array.isArray(variable)

例如:

Array.isArray([])      // true
Array.isArray([1,2,3]) // true
Array.isArray({})      // false
Array.isArray("hello") // false

需要注意的是,Array.isArray方法只能检查数组,不能检查其他类型的值。

typeof、instanceof、Object.prototype.toString 和 Array.isArray 的比较

虽然这四种方法都可以用于检查数据类型,但它们之间的差异也很大:

  • typeof操作符只能返回基本类型和function类型的数据类型。
  • instanceof操作符只能检查对象实例,不能检查基本类型。
  • Object.prototype.toString方法可以返回所有数据类型。
  • Array.isArray方法只能检查数组。

在实际开发中,选择合适的方法,可以大大提高代码的可读性和可维护性。

参考文献