[TOC] #### 1. 前言 --- 這是一道高頻的前端面試題: JS 如何判斷一個(gè)變量是否為數(shù)組 ? 給定兩個(gè)變量,用于測(cè)試判斷變量是否為數(shù)組的方法是否正確 對(duì)于某些新手來說,首先會(huì)想到使用 `typeof` 關(guān)鍵字獲取變量的數(shù)據(jù)類型,這是不可行的。在 JS 中,數(shù)組也是 object。 ```javascript const arr = [1, 2, 3] const user = { name: 'liang' } ``` #### 2. instanceof --- 使用 instanceof 運(yùn)算符,運(yùn)算符左邊是要判斷的變量,右邊是 Array ```javascript // arr 是數(shù)組返回 true // arr 不是數(shù)組返回 false console.log(arr instanceof Array); ``` #### 3. Array.isArray() 方法 --- ES5 將 Array.isArray() 引入 JavaScript,目的就是準(zhǔn)確的檢測(cè)一個(gè)值是否為數(shù)組 ``` Array.isArray(arr) ``` #### 4. 對(duì)象的 constructor 屬性 --- 利用構(gòu)造函數(shù)判斷它的原型是否為 Array ```javascript console.log(arr.constructor === Array); ``` #### 5. Object.prototype.toString.call() --- 調(diào)用 `Object.prototype.toString.call()` 方法,判斷返回值 ```javascript Object.prototype.toString.call(arr) === '[object Array]' ```