为了账号安全,请及时绑定邮箱和手机立即绑定

javascript find()方法源码中的疑惑

javascript find()方法源码中的疑惑

蝴蝶不菲 2018-12-20 18:15:03
这是在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的参数都有哪些,我截图在这里

https://img1.sycdn.imooc.com//5c4d4e370001f94f08000658.jpg

所以arguments[1]也就是这个参数,这个参数在find使用时可以不写

这也就解释了为什么下边要用call,不直接用predicate(kValue, k, o)

因为这个thisArg参数的存在,你就不能确定predicate这个函数是谁调用的,所以需要用call

var thisArg = arguments[1]

假如没有第二个参数,thisArg就会是undefined

如果thisArgnull/undefined,将执行js全局对象,浏览器中是window,其他环境是global

也就是说,没有第二个参数,才会执行window上的predicate函数


查看完整回答
反对 回复 2019-01-27
  • 1 回答
  • 0 关注
  • 573 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信