[TOC] #### 1. 前言 --- 这是一道高频的前端面试题: JS 如何判断一个变量是否为数组 ? 给定两个变量,用于测试判断变量是否为数组的方法是否正确 对于某些新手来说,首先会想到使用 `typeof` 关键字获取变量的数据类型,这是不可行的。在 JS 中,数组也是 object。 ```javascript const arr = [1, 2, 3] const user = { name: 'liang' } ``` #### 2. instanceof --- 使用 instanceof 运算符,运算符左边是要判断的变量,右边是 Array ```javascript // arr 是数组返回 true // arr 不是数组返回 false console.log(arr instanceof Array); ``` #### 3. Array.isArray() 方法 --- ES5 将 Array.isArray() 引入 JavaScript,目的就是准确的检测一个值是否为数组 ``` Array.isArray(arr) ``` #### 4. 对象的 constructor 属性 --- 利用构造函数判断它的原型是否为 Array ```javascript console.log(arr.constructor === Array); ``` #### 5. Object.prototype.toString.call() --- 调用 `Object.prototype.toString.call()` 方法,判断返回值 ```javascript Object.prototype.toString.call(arr) === '[object Array]' ```