函数传参
将数组 arr 中的元素作为调用函数 fn 的参数
方法一:使用apple(此题建议使用方法一)
function argsAsArray(fn, arr) {
return fn.apply(this,arr)
}
方法二:使用call
function argsAsArray(fn, arr) {
return fn.call(this,arr[0],arr[1],arr[2])
}
函数的上下文
方法一:直接将fn挂载到obj对象上
function speak(fn, obj) {
obj.fn = fn
return obj.fn()
}
方法二:使用apply
function speak(fn, obj) {
return fn.apply(obj)
}
方法三:使用call
function speak(fn, obj) {
return fn.call(obj)
}
方法四:使用bind
function speak(fn, obj) {
return fn.bind(obj)()
}
返回函数
实现函数 functionFunction,调用之后满足如下条件:
1、返回值为一个函数 f
2、调用返回的函数 f,返回值为按照调用顺序的参数拼接,拼接字符为英文逗号加一个空格,即 ', '
3、所有函数的参数数量为 1,且均为 String 类型
function functionFunction(str) {
return f = function(arr){
return str+", "+arr;
};
}
使用 arguments
函数 useArguments 可以接收 1 个及以上的参数。请实现函数 useArguments,返回所有调用参数相加后的结果。本题的测试参数全部为 Number 类型,不需考虑参数转换。
function useArguments() {
return [...arguments].reduce((a,b)=>a+b)
}