练习牛客网笔试题--前端js--34-使用闭包

这篇博客探讨了如何在JavaScript中使用闭包来创建一个函数数组,使得调用该数组中的每个函数时,其行为等同于调用给定参数的原始函数。文章通过多种方法展示了实现这一功能的代码,包括map、forEach以及bind方法。这些技巧对于理解和应用JavaScript中的闭包概念至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习牛客网笔试题--前端js--34-使用闭包

    // 题目描述

    // 实现函数 makeClosures,调用之后满足如下条件:

    // 1、返回一个函数数组 result,长度与 arr 相同

    // 2、运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同

    // 输入

    //     [1, 2, 3], function (x) { 

    //         return x * x; 

    //     }

    // 输出    4

 

1.自己的练习

    // 1. map 方法,返回新数组
    function makeClosures(arr, fn) {
        return arr.map(v => {
            return () => fn(v);
        });
    }

    // 2. forEach 方法,遍历创建数组
    function makeClosures(arr, fn) {
        var result = [];
        arr.forEach((v, i) => {
            result[i] = () => fn(v);
        });
        return result;
    }

    // 0. 分析的过程
    function makeClosures(arr, fn) {
        return result = [
            function fun () {
                return fn(arr[0]);
            },
            function() {
                return fn(arr[1]);
            },
            function() {
                return fn(arr[2]);
            },
        ];
    }

2.题解

    // 1.bind方法
    function makeClosures(arr, fn) {
        let result=[];
        for(let i=0;i<arr.length;i++){
            result[i]=fn.bind(this,arr[i]);
        }
        return result;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值