data:2021-01-04
二次封装函数:
已知函数 fn 执行需要 3 个参数。请实现函数 partial,调用之后满足如下条件:
1、返回一个函数 result,该函数接受一个参数
2、执行 result(str3) ,返回的结果与 fn(str1, str2, str3) 一致
function partial(fn, str1, str2) {
function result(str3){
return fn.apply(this,[str1,str2,str3]);
}
return result;
}注意:bind不加后面的括号返回的是函数,加上后面的括号返回的是函数值,这也是bind和call,apply的主要区别,bind需要二次调用,而call和apply返回的是函数值,是直接调用
闭包:
简单的描述闭包:如果在函数func内部声明函数inner,然后在函数外部调用inner,这个过程即产生了一个闭包。闭包最大的用处有两个:可以读取到函数内部的变量,让这些变量的值始终保持在内存中
实现函数 makeClosures,调用之后满足如下条件:
1、返回一个函数数组 result,长度与 arr 相同
2、运行 result 中第 i 个函数,即 resulti,结果与 fn(arr[i]) 相同
function makeClosures(arr, fn) {
let result = []
for(let i=0;i<arr.length;i++){
result[i]=function(){
return fn(arr[i]);
}
}
return result;
}arguments:
是一个除了箭头函数外所有函数都有的一个方法:用于接收函数传入的参数组能通过length获取到长度数量,能够通过下标(类似数组)获取到该位置的值,但是不能使用forEach等方法。
函数 useArguments 可以接收 1 个及以上的参数。请实现函数 useArguments,返回所有调用参数相加后的结果。本题的测试参数全部为 Number 类型,不需考虑参数转换。
function useArguments() {
let sum =0;
for(let i=0;i<arguments.length;i++){
sum += arguments[i]
}
return sum;
}


京公网安备 11010502036488号