使用闭包
来源:互联网 发布:精索静脉曲张程度数据 编辑:程序博客网 时间:2024/06/10 17:44
实现函数 makeClosures,调用之后满足如下条件:
1、返回一个函数数组 result,长度与 arr 相同
1、返回一个函数数组 result,长度与 arr 相同
2、运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同
es6:
function
makeClosures(arr, fn) {
var
result =
new
Array();
for
(let i=0;i<arr.length;i++){
result[i] =
function
(){
return
fn(arr[i]);
//let声明的变量只在let所在代码块内有效,因此每次循环的i都是一个新的变量
};
}
return
result;
}
//这种是错误的写法会导致result中每个函数的参数都是arr[arr.length]
function
makeClosures(arr, fn) {
var
result =
new
Array();
for
(
var
i=0;i<arr.length;i++){
result[i] =
function
(){
return
fn(arr[i]);
};
}
return
result;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
//参考《JavaScript高级程序设计》的典型方法
function
makeClosures(arr, fn) {
var
result =
new
Array();
for
(
var
i=0;i<arr.length;i++){
result[i] =
function
(num){
return
function
(){
return
fn(num);
}
}(arr[i]);
}
return
result;
}
1
2
3
4
5
6
7
8
//使用ES5的bind()方法
function
makeClosures(arr, fn) {
var
result =
new
Array();
for
(
var
i=0;i<arr.length;i++){
result[i] = fn.bind(
null
,arr[i]);
}
return
result;
}
1
2
3
4
5
6
7
8
//使用forEach()
function
makeClosures(arr, fn) {
var
result =
new
Array();
arr.forEach(
function
(curr){
result.push(
function
(){
return
fn(curr)});
})
return
result;
}
0 0
- 闭包的使用
- javascript闭包使用
- 使用闭包
- 使用闭包
- 使用闭包
- 闭包的使用
- JavaScript 闭包的使用
- JavaScript闭包使用总结
- 循环中使用闭包
- Swift使用闭包表达式
- Swift闭包的使用
- Swift-闭包简单使用
- 为什么要使用闭包
- Swift 函数,闭包使用
- JS闭包的使用
- swift闭包的使用
- Swift--08闭包使用
- Swift 闭包的使用
- LeetCode 387. First Unique Character in a String
- 虚函数、纯虚函数在C++和java中的区别
- JS-笔记
- 回调函数总结
- Intent 简单使用
- 使用闭包
- Mootools试用体会
- cifar-10数据转为图片(jpg,png)
- Mybatis源码解析四、SqlSession运行过程
- java的动态代理机制详解
- mysql官方文档阅读笔记(二)整体目录翻译
- ETL利器Kettle实战应用解析系列二 【应用场景和实战DEMO下载】
- 在循环的过程中删除数组元素的问题
- JS-笔记