咱们如何判断一个变量是否为数组类型呢? 今天来给你们介绍七种方式,别走开, 这确定会被问到的~继续往下看吧javascript
首先先告诉大家, typeof 是没法判断一个变量是否为数组类型的,咱们来看一下例子:java
let arr = [1, 2, 3] console.log(typeof arr) // object 最后输出的是object对象
使用 instanceof 运算符, 该运算符左边是咱们想要判断的变量, 右边则是咱们想要判断的对象的类, 例如:web
let arr = [1, 2, 3] console.log(arr instanceof Array) // true 返回true,说明变量arr是数组类型
利用构造函数来判断他的原型是否为Array, 用法: 变量.constructor === 变量类型
面试
let arr = [1, 2, 3] console.log(arr.constructor === Array) // true 返回true,说明变量arr是数组类型
第三种方法利用的一个专门的方法 isArray(), 用法:Array.isArray(变量)
,返回true,则说明该变量是数组类型;反之,说明该变量不是数组类型数组
let arr = [1, 2, 3] console.log(Array.isArray(arr)) // true 返回true,说明变量arr是数组类型
第四种方法是调用Object.prototype.toString.call()
,返回true,则说明该变量是数组类型;反之,说明该变量不是数组类型svg
let arr = [1, 2, 3] console.log(Object.prototype.toString.call(arr) === '[object Array]') // true 返回true,说明变量arr是数组类型
第五种方式是经过对象的原型方式来判断,直接来看例子函数
let arr = [1, 2, 3] console.log(arr.__proto__ === Array.prototype) // true 返回true,说明变量arr是数组类型
第六种方式是经过 Object.getPrototypeOf()
来判断是否为数组类型,例如spa
let arr = [1, 2, 3] console.log(Object.getPrototypeOf(arr) === Array.prototype) // true 返回true,说明变量arr是数组类型
第七种方式是经过 isPrototypeOf()
方法来判断是否为数组类型,例如prototype
let arr = [1, 2, 3] console.log(Array.prototype.isPrototypeOf(arr)) // true 返回true,说明变量arr是数组类型
当你面试中被问到如何判断一个变量是否为数组类型的时候,你就将这七种方式脱口而出吧, 必定会让面试官大吃一斤的~code