这是在MDN上copy的find()方法的源码,想请问下代码里var thisArg = arguments[1];中的arguments对应的是哪些值,还有 if (predicate.call(thisArg, kValue, k, o)) { return kValue; } 这部分代码能不能直接写成predicate( kValue, k, o)?
1 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
MDN中已经说明了find
的参数都有哪些,我截图在这里
所以arguments[1]
也就是这个参数,这个参数在find
使用时可以不写
这也就解释了为什么下边要用call
,不直接用predicate(kValue, k, o)
因为这个thisArg
参数的存在,你就不能确定predicate
这个函数是谁调用的,所以需要用call
var thisArg = arguments[1]
假如没有第二个参数,thisArg
就会是undefined
如果thisArg
为null
/undefined
,将执行js全局对象,浏览器中是window
,其他环境是global
也就是说,没有第二个参数,才会执行window上的predicate
函数
添加回答
举报
0/150
提交
取消