当前位置:首页 > 科技  > 软件

Javascript的闭包有哪些应用?你学会了吗?

来源: 责编: 时间:2023-11-28 09:37:14 326观看
导读JavaScript 中的闭包是一种强大的特性,它可以用于多种应用。以下是一些闭包在 JavaScript 中的常见应用:1、封装私有变量: 通过闭包,可以创建私有变量和方法。外部作用域无法直接访问闭包内的变量,从而实现了信息隐藏和封

JavaScript 中的闭包是一种强大的特性,它可以用于多种应用。以下是一些闭包在 JavaScript 中的常见应用:qSF28资讯网——每日最新资讯28at.com

1、封装私有变量: 通过闭包,可以创建私有变量和方法。外部作用域无法直接访问闭包内的变量,从而实现了信息隐藏和封装。qSF28资讯网——每日最新资讯28at.com

function createCounter() {    let count = 0;    return function() {        count++;        return count;    };}const counter = createCounter();console.log(counter()); // 1console.log(counter()); // 2

2、模块模式: 使用闭包可以创建模块,将相关的功能组织在一起,同时保持内部状态的私有性。qSF28资讯网——每日最新资讯28at.com

const Module = (function() {    let privateVar = 0;    function privateFunction() {        // ...    }    return {        publicVar: 1,        publicFunction: function() {            privateVar++;            return privateFunction();        }    };})();console.log(Module.publicVar); // 1console.log(Module.publicFunction()); // Result of privateFunction

3、事件处理程序: 在事件处理程序中使用闭包,可以保持对外部作用域的状态引用,而无需全局变量。qSF28资讯网——每日最新资讯28at.com

function setupEventListener() {    let count = 0;    document.getElementById('myButton').addEventListener('click', function() {        count++;        console.log(`Button clicked ${count} times.`);    });}setupEventListener();

4、回调函数: 闭包经常用于创建回调函数,保存对外部函数作用域的引用,以便在稍后调用。qSF28资讯网——每日最新资讯28at.com

function doSomethingAsync(callback) {    setTimeout(function() {        console.log('Async operation completed.');        callback();    }, 1000);}doSomethingAsync(function() {    console.log('Callback executed.');});

5、实现函数记忆: 闭包可以用于缓存函数的结果,以提高性能。这通常用于递归函数或计算昂贵的操作。qSF28资讯网——每日最新资讯28at.com

function memoize(fn) {    const cache = {};    return function(...args) {        const key = JSON.stringify(args);        if (!cache[key]) {            cache[key] = fn(...args);        }        return cache[key];    };}const memoizedAdd = memoize(function(x, y) {    console.log('Calculating sum...');    return x + y;});console.log(memoizedAdd(2, 3)); // Calculating sum... 5console.log(memoizedAdd(2, 3)); // 5 (from cache)

这些只是 JavaScript 中闭包的一些常见用法。闭包的灵活性使得它在许多不同的上下文中都能够发挥作用。qSF28资讯网——每日最新资讯28at.com

qSF28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-34680-0.htmlJavascript的闭包有哪些应用?你学会了吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 解密Spring Cloud微服务调用:如何轻松获取请求目标方的IP和端口

下一篇: 前端性能指标--首屏时间统计

标签:
  • 热门焦点
  • 对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • 六大权益!华为8月服务日开启:手机免费贴膜、维修免人工费

    8月5日消息,一年一度的华为开发者大会2023(Together)日前在松山湖拉开帷幕,与此同时,华为8月服务日也式开启,到店可享六大专属权益。华为用户可在华为商城Ap
  • Golang 中的 io 包详解:组合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是对Reader和Writer接口的组合,
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    作者:黄河懂运营一条性教育视频,被54万人“珍藏”是什么体验?最近,情感博主@公主是用鲜花做的,火了!仅仅凭借一条视频,光小红书就有超过128万人,为她疯狂点赞!更疯狂的是,这
  • 2023年,我眼中的字节跳动

    此时此刻(2023年7月),字节跳动从未上市,也从未公布过任何官方的上市计划;但是这并不妨碍它成为中国最受关注的互联网公司之一。从2016-17年的抖音强势崛起,到2018年的“头腾
  • 华为Mate60标准版细节曝光:经典星环相机模组回归

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 2纳米决战2025

    集微网报道 从三强争霸到四雄逐鹿,2nm的厮杀声已然隐约传来。无论是老牌劲旅台积电、三星,还是誓言重回先进制程领先地位的英特尔,甚至初成立不久的新
  • 超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    2023年7月26日,三星电子正式发布了Galaxy Z Flip5与Galaxy Z Fold5。三星新一代折叠屏手机采用超闭合精工铰链,让折叠后的缝隙不再可见。同时,配合处
Top