首页 > 试题广场 >

使用 apply 调用函数

[编程题]使用 apply 调用函数
  • 热度指数:53013 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
实现函数 callIt,调用之后满足如下条件
1、返回的结果为调用 fn 之后的结果
2、fn 的调用参数为 callIt 的第一个参数之后的全部参数
示例1

输入

输出

推荐
因为arguments并非真正的数组,因此要获得callIt的第一个参数之后的所有参数,不能直接使用slice方法截取,需要先将arguments转换为真正的数组才行。有两种常见的方法,一是使用slice方法:var args = Array . prototype . slice . call ( arguments );二是循环遍历逐一填入新数组。在获得了args之后,就可以调用apply来执行传入的函数参数。
function callIt(fn) {
    //将arguments转化为数组后,截取第一个元素之后的所有元素
    var args = Array.prototype.slice.call(arguments,1);
    //调用fn
    var result = fn.apply(null,args);
    return result;
}


编辑于 2015-08-18 21:05:42 回复(23)
 function callIt() {
     let sk = [].shift.call(arguments);
     return  sk.apply(this,arguments)
 }

发表于 2023-07-24 17:22:10 回复(0)
function callIt(fn) {
    let arr=[...arguments]
    arr.splice(0,1)
    return fn.apply(this,arr)
}
发表于 2023-05-13 04:42:29 回复(0)
function callIt(fn) {
  let arr=Array.from(arguments)
      arr.splice(0,1)
     return fn.apply(null,arr)
  }
发表于 2023-04-21 16:03:18 回复(0)
function callIt(fn) {
    let [, ...args] = arguments;
    return fn.apply(null, args);
}

发表于 2023-01-09 09:46:49 回复(0)
function callIt(fn) {
  return fn(...[...arguments].slice(1))
}

发表于 2022-12-06 17:24:36 回复(0)
function callIt(fn) {
    return fn.apply(this,Array.from(arguments).slice(1))
}
发表于 2022-11-18 20:12:13 回复(0)
将伪数组转为真正的数组
function callIt(fn) {
    let arr = [...arguments]
    arr.shift()
    return fn.call(this, ...arr)
 }
发表于 2022-11-15 21:30:03 回复(0)
function callIt(fn) {
    return fn(Array.from(arguments).slice(1))
}
发表于 2022-10-25 12:40:02 回复(0)
function callIt(fn, ...args) {
    return fn.apply(fn, args)
}

发表于 2022-09-03 15:01:47 回复(0)
function callIt(fn) {
    const [f, ...args] = [...arguments]
    return fn(...args)
}
发表于 2022-07-23 10:08:41 回复(0)
发表于 2022-07-15 15:30:14 回复(0)
function callIt(fn) {
    return fn(...Array.from(arguments).slice(1))
}

发表于 2022-07-07 14:09:02 回复(0)
function callIt(fn,...rest) {
    return fn.apply(this,rest)
}
发表于 2022-06-22 14:02:47 回复(0)
function callIt(fn) {
    var arr = Array.from(arguments).slice(1);
    return fn.apply(null, arr)
}
发表于 2022-06-05 20:56:08 回复(0)
es6 rest函数:
function callIt(fn,...arr) {
    return fn.apply(null, arr);
}

发表于 2022-03-20 17:27:49 回复(0)
function callIt(fn) {
    var arr = Array.from(arguments);
    arr.shift();
    return fn.apply(this,arr);
}

发表于 2022-02-15 17:00:10 回复(0)
  args = [].slice.call(arguments,1)
  return fn.apply(null, args)
}
发表于 2022-01-17 15:59:25 回复(0)
function callIt(fn) {
    let args=[...arguments]
    args.shift()
   return fn(...args)
    
}
发表于 2022-01-13 14:25:03 回复(0)
function callIt(fn) {
    return fn(...[...arguments].slice(1))
}

发表于 2022-01-07 10:03:06 回复(0)