• js基础闭包练习题


    题目描述

    实现函数 makeClosures,调用之后满足如下条件:
    1、返回一个函数数组 result,长度与 arr 相同
    2、运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同
    示例1
     1 //参考《JavaScript高级程序设计》的典型方法
     2 function makeClosures(arr, fn) {
     3     var result = new Array();
     4     for(var i=0;i<arr.length;i++){
     5         result[i] = function(num){
     6             return function(){
     7                 return fn(num);
     8                  
     9             }
    10         }(arr[i]);
    11     }
    12     return result;
    13 }
    14 
    15 //使用ES5的bind()方法
    16 function makeClosures(arr, fn) {
    17     var result = new Array();
    18     for(var i=0;i<arr.length;i++){
    19         result[i] = fn.bind(null,arr[i]);
    20     }
    21     return result;
    22 }
    23 
    24 //使用forEach()
    25 function makeClosures(arr, fn) {
    26     var result = new Array();
    27     arr.forEach(function(curr){
    28         result.push(function(){return fn(curr)});
    29     })
    30     return result;
    31 }
    32 
    33 //使用let
    34 function makeClosures(arr, fn) {   
    35     var result = new Array();
    36     for(let i=0;i<arr.length;i++){
    37         result[i] = function(){
    38             return fn(arr[i]); //let声明的变量只在let所在代码块内有效,因此每次循环的i都是一个新的变量           
    39         };
    40     }
    41     return result;
    42 }
  • 相关阅读:
    Intellij IDEA 常用快捷键
    @Transient注解----Hiberbate
    tomcat:域名指向项目名
    java实现全排列
    Bean不同配置方式的比较
    Spring MVC:在jsp中引入css
    Spring中Bean的作用域
    第9章 初识HAL固件库
    第8章 自己写库—构建库函数雏形
    第7章 使用寄存器点亮LED灯
  • 原文地址:https://www.cnblogs.com/xiaole9924/p/11818587.html
Copyright © 2020-2023  润新知