在某些场景下,我们可能需要判断一个JavaScript变量是否是数组。
1、在ECMAScript5标准中Array类增加了一个静态方法isArray,我们可以直接用Array.isArray来判断变量是否是数组。
Array.isArray([1,2,3]) //此处返回true
2、但是某些比较老的浏览器,比如IE8及以下,没有实现Array的isArray方法,那么就需要换一种方式来判断:
Object.prototype.toString.call([1,2,3]) //返回字符串:'[object Array]'
那么我们定义一个函数来实现数组判断
function isArray (value) {
if (Object.prototype.toString.call(value) === '[object Array]') {
return true
}
return false
}
3、综合两种情况,我们可以判断Array是否有isArray方法,没有的话,就定义我们上面第二点中写的方法到Array类上
if (!Array.isArray) {
Array.isArray = function (value) {
if (Object.prototype.toString.call(value) === '[object Array]') {
return true
}
return false
}
}
这样我们就可以在需要判断的地方直接使用Array.isArray来判断是否是数组了。
--------------------------------------------分割线啊分割线--------------------------------------------------
总结下前端学习感悟,如有错误,欢迎拍砖