js判断数据类型的方法(分享常用的4种方法附实例代码)

 分类:js知识时间:2023-06-01 07:30:01点击:

js中有6种基本数据类型:字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。和引用(复杂)类型如:对象(Object)、数组(Array)、函数(Function),以及两个特殊的对象:正则(RegExp)和日期(Date)。 由于jsvascript是动态语言,它的类型运行的时候才知道,所以在开发过程中对类型的判断尤其重要。


js提供了多种方法来进行数据类型判断,包括 typeof、instanceof、Object.prototype.toString 等。

1. typeof方法

typeof 是 JavaScript 中最常用的数据类型判断方式。它返回一个字符串,表示操作数的数据类型。常见的数据类型包括: "number"、"string"、"boolean"、"undefined"、"object" 和 "function"。

例如:

typeof 123  // 返回 "number"
typeof "Hello World"  // 返回 "string"
typeof true  // 返回 "boolean"
typeof undefined  // 返回 "undefined"
typeof null  // 返回 "object"
typeof [1, 2, 3]  // 返回 "object"
typeof {"name": "Alex", "age": 18}  // 返回 "object"
typeof function() {}  // 返回 "function"

需要注意的是,对于空对象、数组和 null,typeof 都会返回 "object",这是一个历史遗留问题。

2. instanceof方法

instanceof 运算符用于判断一个对象是否是某个类的实例。只能用于对象类型的判断,不能用于基本数据类型判断。当一个对象是指定类的实例或其子类的实例时,instanceof 返回 true。

例如:

var arr = [1, 2, 3];
console.log(arr instanceof Array);  // 返回 true

var obj = {"name": "Alex", "age": 18};
console.log(obj instanceof Object);  // 返回 true

function Person(name, age) {
  this.name = name;
  this.age = age;
}
var alex = new Person("Alex", 18);
console.log(alex instanceof Person);  // 返回 true

3. Object.prototype.toString方法

Object.prototype.toString方法可以返回调用它的对象的类型字符串。需要注意,这个方法返回的不是字面量形式的字符串,而是 "[object 类型]" 的形式,其中类型为对象的实际类型。

例如:

Object.prototype.toString.call(123)  // 返回 "[object Number]"
Object.prototype.toString.call("Hello World")  // 返回 "[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([1, 2, 3])  // 返回 "[object Array]"
Object.prototype.toString.call({"name": "Alex", "age": 18})  // 返回 "[object Object]"
Object.prototype.toString.call(function() {})  // 返回 "[object Function]"

4. constructor方法

constructor 属性是 JavaScript 中每个对象都拥有的一个属性,它指向构造函数。用于判断某个变量的数据类型时,可以通过判断它的 constructor 是否等于相应的构造函数来进行判断。

例如:

var arr = [1, 2, 3];
console.log(arr.constructor === Array);  // 返回 true

var obj = {"name": "Alex", "age": 18};
console.log(obj.constructor === Object);  // 返回 true

function Person(name, age) {
  this.name = name;
  this.age = age;
}
var alex = new Person("Alex", 18);
console.log(alex.constructor === Person);  // 返回 true

需要注意的是,可能存在 constructor 不准确或被修改的情况。

总结

以上就是 JavaScript 中常见的几种数据类型判断方法。在实际开发中,应当根据具体场景来选择合适的方式进行数据类型的判断,以保证程序正确性和稳定性。

比如对于基本数据类型的判断,一般使用 typeof;对于引用数据类型的判断,使用 instanceof 或者 Object.prototype.toString 更为准确;constructor 判断方式则存在一定局限性和不准确性,应该谨慎使用。

除注明外的文章,均为来源:老汤博客,转载请保留本文地址!
原文地址: