1. 前言
這是一道高頻的前端面試題: JS 如何判斷一個(gè)變量是否為數(shù)組 ?
給定兩個(gè)變量,用于測(cè)試判斷變量是否為數(shù)組的方法是否正確
對(duì)于某些新手來說,首先會(huì)想到使用 typeof
關(guān)鍵字獲取變量的數(shù)據(jù)類型,這是不可行的。在 JS 中,數(shù)組也是 object。
const arr = [1, 2, 3]
const user = { name: 'liang' }
2. instanceof
使用 instanceof 運(yùn)算符,運(yùn)算符左邊是要判斷的變量,右邊是 Array
// 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
console.log(arr.constructor === Array);
5. Object.prototype.toString.call()
調(diào)用 Object.prototype.toString.call()
方法,判斷返回值
Object.prototype.toString.call(arr) === '[object Array]'