1.以操作符typeof
操作数组,会返回object
var arr = [1, 2, 3]; typeof(arr) // object
2.使用instanceof
操作符检测数组
var arr = [1, 2, 3]; console.log( arr instanceof Array); //true
PS: 在大部分情况下是正确的,但是在IE浏览器中不同框架下运行会有错误,具体参考附图
3.ECMAscript5中定义了一个新方法Array.isArray()
,该函数在参数为数组时返回true
var arr = [1, 2, 3]; console.log( Array.isArray(arr) ); //true
4.在不支持Array.isArray()
方法的情况下,可以通过以下代码实现该方法:
if (typeof Array.isArray === 'undefined') { Array.isArray = function (arg) { return Object.prototype.toString.call(arg) === "[object Array]"; } }
PS: 在传入参数是对象则返回
"[object Object]"
,传入参数是数组时返回"[object Array]"
javascript 为啥不用instanceof检测数组,这里有一个示例坑 - QQLQ - 博客园.png
)
网友评论