首页 > 试题广场 >

函数传参

[编程题]函数传参
  • 热度指数:59073 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
将数组 arr 中的元素作为调用函数 fn 的参数
示例1

输入

function (greeting, name, punctuation) {return greeting + ', ' + name + (punctuation || '!');}, ['Hello', 'Ellie', '!']

输出

Hello, Ellie!
推荐
调用函数可以使用call或者apply这两个方法,区别在于call需要将传递给函数的参数明确写出来,是多少参数就需要写多少参数。而apply则将传递给函数的参数放入一个数组中,传入参数数组即可。
function argsAsArray(fn, arr) {
  return fn.apply(this, arr);
 }

编辑于 2015-08-18 21:02:22 回复(44)
???? 看不太懂了,样例覆盖率不到100%还是考点根本就不深入呀
发表于 2023-06-04 17:51:21 回复(0)
function argsAsArray(fn, arr) {
    return fn(...arr)
}
发表于 2023-05-07 23:08:04 回复(0)

非常简单 一行代码!!!

function argsAsArray(fn, arr) {
 return fn(...arr)
}

解释一下原理:

// 扩展运算符可以将数组拆分成以逗号分隔的参数序列
 let ary = ["a", "b", "c"];
 //...ary // "a", "b", "c" 
//...ary的实际表现效果如上  是有逗号分隔的  
 console.log(...ary) //a b c
 console.log("a", "b", "c")// a b c
//而控制台输出会把逗号解析成分隔符  展现的就是空格

//故    ary 就可以用来给函数传递参数  
//比如   传参fn('a','b','c') 按照上面代码就可以写成 fn(...ary)

发表于 2023-03-28 18:20:38 回复(0)
 return  fn(...arr)
发表于 2023-02-02 15:29:43 回复(0)
function argsAsArray(fn, arr) {
    return fn(...arr)
}
发表于 2023-01-30 14:11:10 回复(0)
function argsAsArray(fn, arr) {
    return fn(...arr)
}

发表于 2022-12-06 16:07:42 回复(0)
// 直接采用展开运算符调用,没用apply和call或是bind
function argsAsArray(fn, arr) {
    return fn(...arr)
}

发表于 2022-07-07 11:28:39 回复(0)
function argsAsArray(fn, arr) {
  return fn(...arr);
};
不用改变this指向,只需要3个点,朴实无华且枯燥。
发表于 2022-05-10 17:15:52 回复(0)
function argsAsArray(fn, arr) {
    return fn(...arr);
}
发表于 2022-04-18 13:46:24 回复(0)
function argsAsArray(fn, arr) {
    return fn(...arr);
}
发表于 2022-04-03 21:06:12 回复(0)
方法一:
function argsAsArray(fn, arr) {
    return fn(arr[0],arr[1],arr[2]);
}
方法二:ES6扩展运算符
function argsAsArray(fn, arr) {
    return fn(...arr);
}
方法三:apply :第一个参数:函数体内this的指向,第二个参数:接收一个集合对象(数组和类数组)
function argsAsArray(fn, arr) {
    return fn.apply(fn,arr);
}




发表于 2022-03-27 20:59:36 回复(0)
function argsAsArray(fn, arr) {
    return fn.call(null, ...arr)
    // return fn.apply(null, arr)
}

发表于 2022-01-06 21:02:08 回复(0)
function argsAsArray(fn, arr) {
    return fn.apply(this, arr);
    return fn.call(this, ...arr);
    return fn(...arr)    
}

发表于 2022-01-06 17:04:57 回复(2)
function argsAsArray(fn, arr) {
    var greeting = arr[0];
    var name = arr[1];
    var punctuation  = arr[2];
    return fn.call(this,greeting,name,punctuation);
}
发表于 2021-12-07 15:27:38 回复(0)
function argsAsArray(fn, arr) {
    return fn.bind(this, ...arr)();
}
这个也行的
发表于 2021-11-20 15:52:06 回复(0)
function argsAsArray(fn, arr) {
    return fn.apply(this,arr);
}

发表于 2021-11-16 22:41:14 回复(0)
function argsAsArray(fn, arr) {
    return fn(...arr);
}
发表于 2021-11-01 14:21:45 回复(0)