js判断数据类型的方法(分享常用的4种方法附实例代码)
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 判断方式则存在一定局限性和不准确性,应该谨慎使用。
原文地址:https://tangjiusheng.cn/js/4973.html