JS中判断数据类型的四种方法
在JavaScript中,可以使用以下四种方法来判断数据类型:
typeof
操作符instanceof
操作符Object.prototype.toString
方法Array.isArray
方法(用于判断是否为数组)
1. typeof
操作符
用来检测数据的类型,对于基础类型(string
,number
,boolean
,undefined
,symbol
,bigint
),除了null
都可以正确判断。
console.log(typeof 'Hello'); // "string"
console.log(typeof 42); // "number"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof function(){}); // "function"
console.log(typeof {}); // "object"
console.log(typeof null); // "object"
console.log(typeof []); // "object"
console.log(typeof Symbol()); // "symbol"
console.log(typeof BigInt(12345)); // "bigint"
2. instanceof
操作符
判断某个实例是否属于某个构造函数的实例。
console.log('Hello' instanceof String); // false
console.log(new String('Hello') instanceof String); // true
console.log([] instanceof Array); // true
console.log({} instanceof Object); // true
3. Object.prototype.toString
方法
可以判断出所有的JavaScript数据类型,包括基础类型和复杂类型。
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(function(){})); // "[object Function]"
console.log(Object.prototype.toString.call({})); // "[object Object]"
console.log(Object.prototype.toString.call([])); // "[object Array]"
console.log(Object.prototype.toString.call(Symbol())); // "[object Symbol]"
console.log(Object.prototype.toString.call(BigInt(12345))); // "[object BigInt]"
4. Array.isArray
方法
用于判断是否为数组。
console.log(Array.isArray([])); // true
console.log(Array.isArray({})); // false
以上四种方法各有优缺点,具体使用时需根据场景选择合适的方法。
评论已关闭