我试图通过使用every()
函数检查目标对象中的每个元素是否为数组对象,代码如下:
let targetObj = [[1,2],[3],4];
let result = targetObj.every((val,index,arr)=>{
return Array.isArray(val);
});
result
是假的,因为4
不是数组对象,但我发现如果我用Array.isArray
替换回调函数仍然可以工作:
let result = targetObj.every(Array.isArray);
所以我的问题是:
1.这样,由于回调函数没有采用任何参数。为什么result
仍然返回false
?
2. Array.isArray
回调函数如何在不给出任何参数的情况下自动检查targetObj
中的每个元素?
答案 0 :(得分:0)
Array.isArray有一个参数。 每个(...)给出3个参数。
.every中的回调(不直接调用)将给出参数。 如果回调有超过3个参数,则下一个参数将被取消定义。
由于你没有打电话给回叫,所以每个人都在为你调用它,并且它会填补它的参数。