首页 > 试题广场 >

函数传参

[编程题]函数传参
  • 热度指数: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)
function argsAsArray(fn, arr) {
    /*
    function(greeting, name, punctuation) {
    return greeting + ', ' + name + (punctuation || '!');
},
['Hello', 'Ellie', '!']
    */
    
    //return fn.apply(this,arr)
    return fn(...arr)
}

解构或者apply()
发表于 2021-03-31 23:03:22 回复(0)
// 使用es6解法
function argsAsArray(fn, arr) {
    return fn(...arr);
}

// 用apply方法
function argsAsArray(fn, arr) {
    return fn.apply(this, arr);
}

// call方法
function argsAsArray(fn, arr) {
    return fn.call(this, ...arr);
}

// bind方法
function argsAsArray(fn, arr) {
    return fn.bind(this, ...arr)();
}


编辑于 2020-07-15 01:30:29 回复(0)
    function speak(fnobj) {
        // return fn.bind(obj)();
        return fn.call(obj)
    }
call会立即执行 bind不会  俩种方法都可
发表于 2020-06-07 08:43:03 回复(0)

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

发表于 2020-05-23 09:57:36 回复(0)
function argsAsArray(fn, arr) {
    return fn(...arr)
}

发表于 2020-04-15 17:07:57 回复(0)
function argsAsArray(fn, arr) {
   //return fn.apply(this,arr);
   //return fn(...arr);
   //return fn.apply(null,arr);
   //return fn.call(null,...arr);
   return fn.call(null,arr[0],arr[1],arr[2]);
}

发表于 2020-03-24 17:33:40 回复(0)
function argsAsArray(fn, arr) {
    return fn.apply(this, arr);
}

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

发表于 2019-08-12 12:01:18 回复(0)
// 调用apply
function argsAsArray(fn, arr) {
    return fn.apply(this,arr)
}
// 调用call
function argsAsArray(fn, arr) {
    return fn.call(this,arguments)
}
// 使用扩展运算符
function argsAsArray(fn, arr) {
    return fn(...arr)
}
发表于 2019-03-09 12:05:07 回复(0)
function argsAsArray(fn, arr) {
    return fn.apply(this,arr)
}
apply()函数,this调用fn方法,arr为传入的数组
发表于 2018-11-16 09:48:35 回复(0)
function argsAsArray(fn, arr) {
       return fn.apply(this,arr);
}
发表于 2018-10-21 13:15:13 回复(0)
解构赋值也可以,但牛客此环境好像不支持es6语法。
function argsAsArray(fn, arr) {
    //return fn(...arr);
    return fn.apply(this, arr);
}


发表于 2018-07-04 12:01:44 回复(0)
function argsAsArray(fn, arr) {
    return fn.apply(this,arr);
}
发表于 2017-04-12 16:19:25 回复(0)
function argsAsArray(fn, arr) {
return fn(arr[0],arr[1],arr[2]);
}
发表于 2016-10-19 19:50:32 回复(0)
function argsAsArray(fn, arr) {
return fn(arr[0],arr[1],arr[2]);
}
//最直接的方法
unction argsAsArray(fn, arr) {
     return fn.apply(this, arr);
}
//比较高级的方法,通过apply改变作用域

发表于 2016-08-22 21:18:43 回复(1)