js判断数据类型
JavaScript中有以下几种数据类型:
基本数据类型:Number、String、Boolean、Null、Undefined、Symbol(ES6新增)
引用数据类型:Object、Array、Function、Date、RegExp等
判断数据类型的方法:
typeof运算符:可以判断基本数据类型,但是对于引用数据类型,除了函数返回"function"外,都返回"object"。
instanceof运算符:可以判断引用数据类型,但是不能判断基本数据类型。
Object.prototype.toString.call()方法:可以判断所有数据类型,包括基本数据类型和引用数据类型。例如:
console.log(typeof 123); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof null); // "object"
console.log(typeof undefined); // "undefined"
console.log(typeof Symbol()); // "symbol"
console.log([] instanceof Array); // true
console.log({} instanceof Object); // true
console.log(new Date() instanceof Date); // true
console.log(function(){} instanceof Function); // true
console.log(Object.prototype.toString.call(123)); // "[object Number]"
console.log(Object.prototype.toString.call("hello")); // "[object String]"
console.log(Object.prototype.toString.call(true)); // "[object Boolean]"
console.log(Object.prototype.toString.call(null)); // "[object Null]"
console.log(Object.prototype.toString.call(undefined)); // "[object Undefined]"
console.log(Object.prototype.toString.call(Symbol())); // "[object Symbol]"
console.log(Object.prototype.toString.call([])); // "[object Array]"
console.log(Object.prototype.toString.call({})); // "[object Object]"
console.log(Object.prototype.toString.call(new Date())); // "[object Date]"
console.log(Object.prototype.toString.call(function(){})); // "[object Function]"
除了上述方法,还有一些其他的方法可以判断数据类型,例如:
Array.isArray()方法:可以判断一个变量是否为数组类型。
console.log(Array.isArray([])); // true
console.log(Array.isArray({})); // false
isNaN()方法:可以判断一个变量是否为NaN。
console.log(isNaN(NaN)); // true
console.log(isNaN(123)); // false
console.log(isNaN("hello")); // true
需要注意的是,isNaN()方法会将非数字类型的变量转换为数字类型,因此需要谨慎使用。
typeof和instanceof的局限性:虽然typeof和instanceof可以判断数据类型,但是它们也有一些局限性。例如,typeof无法判断一个变量是否为数组类型,instanceof无法判断一个变量是否为null或undefined。
因此,在实际开发中,需要根据具体情况选择合适的方法来判断数据类型。