前端小咸鱼一条 2022-08-21 12:39 采纳率: 61.5%
浏览 20
已结题

无法理解!f.apply(this,arguments)

最近在阅读JavaScript权威指南,阅读到高阶函数,没太理解!f.apply(this,arguments); 谢谢啦


function not(f) {
    return function () { // 返回一个新的函数
        var result = f.apply(this, arguments);//调用f()
        return !result;//对结果求反
    }
}

var even = function (x) {// 判断a是否为偶数的函数
    return x % 2 === 0;
}

var odd = not(even); //一个新函数,所做的事情和event()相反
console.log([1, 1, 3, 5, 5].every(odd));//true:每个元素就都是奇数
  • 写回答

1条回答 默认 最新

  • 林晓风 2022-08-21 15:08
    关注

    f.apply(this,arguments)是指调用f方法,将参数传递给被调用的函数。我给你举个例子,你对照着例子理解一下:
    例如:

    function num(a,b){
        console.log(a+b)
    }; 
    
    function add(num1,num2){
        num.apply(this,arguments)
    };
    

    这里面的num.apply是指调用num方法,里面的this,arguments,是指将此处的this对象传递给num方法,num方法里的this就可以指向此处的this,
    arguments是指将当前的参数传递给被调用的num函数。

    所以,示例中的代码,如果我们调用add(1,2)的话,那么它就会在add方法中调用num方法,并将参数1和2传递给num,所以结果是打印出3。

    由以上案例,你应该能理解了吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 创建了问题 8月21日

悬赏问题

  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题
  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥50 vue router 动态路由问题