日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Javascript的閉包有哪些應用?你學會了嗎?

來源: 責編: 時間:2023-11-28 09:37:14 249觀看
導讀JavaScript 中的閉包是一種強大的特性,它可以用于多種應用。以下是一些閉包在 JavaScript 中的常見應用:1、封裝私有變量: 通過閉包,可以創建私有變量和方法。外部作用域無法直接訪問閉包內的變量,從而實現了信息隱藏和封

JavaScript 中的閉包是一種強大的特性,它可以用于多種應用。以下是一些閉包在 JavaScript 中的常見應用:8sp28資訊網——每日最新資訊28at.com

1、封裝私有變量: 通過閉包,可以創建私有變量和方法。外部作用域無法直接訪問閉包內的變量,從而實現了信息隱藏和封裝。8sp28資訊網——每日最新資訊28at.com

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

2、模塊模式: 使用閉包可以創建模塊,將相關的功能組織在一起,同時保持內部狀態的私有性。8sp28資訊網——每日最新資訊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、事件處理程序: 在事件處理程序中使用閉包,可以保持對外部作用域的狀態引用,而無需全局變量。8sp28資訊網——每日最新資訊28at.com

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

4、回調函數: 閉包經常用于創建回調函數,保存對外部函數作用域的引用,以便在稍后調用。8sp28資訊網——每日最新資訊28at.com

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

5、實現函數記憶: 閉包可以用于緩存函數的結果,以提高性能。這通常用于遞歸函數或計算昂貴的操作。8sp28資訊網——每日最新資訊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 中閉包的一些常見用法。閉包的靈活性使得它在許多不同的上下文中都能夠發揮作用。8sp28資訊網——每日最新資訊28at.com

8sp28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-34680-0.htmlJavascript的閉包有哪些應用?你學會了嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 解密Spring Cloud微服務調用:如何輕松獲取請求目標方的IP和端口

下一篇: 前端性能指標--首屏時間統計

標簽:
  • 熱門焦點
  • 一加Ace2 Pro官宣:普及16G內存 引領24G

    一加官方今天繼續為本月發布的新機一加Ace2 Pro帶來預熱,公布了內存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領,還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待。”同時
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發布,近日該機的真機包裝盒在網上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續了之前的方案,變化不大,這也是目前小米旗艦
  • 盧偉冰長文解析K60至尊版 對Redmi有著里程碑式的意義

    在今天的Redmi后性能時代戰略發布會結束之后,Redmi總經理盧偉冰又帶來了一篇長文,詳解了為什么 Redmi 要開啟后性能時代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • 量化指標是與非:挽救被量化指標扼殺的技術團隊

    作者 | 劉新翠整理 | 徐杰承本文整理自快狗打車技術總監劉新翠在WOT2023大會上的主題分享,更多精彩內容及現場PPT,請關注51CTO技術棧公眾號,發消息【WOT2023PPT】即可直接領取
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • Python異步IO編程的進程/線程通信實現

    這篇文章再講3種方式,同時講4中進程間通信的方式一、 Python 中線程間通信的實現方式共享變量共享變量是多個線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現百度,功能雖然實現了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內容電商的概念興起,抖音、快手、小紅書組成的“新電商三兄弟”成為業內一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • OPPO、vivo、小米等國內廠商Q2在印度智能手機市場份額依舊高達55%

    7月20日消息,據外媒報道,研究機構的報告顯示,在全球智能手機出貨量同比仍在下滑的大背景下,印度這一有潛力的市場也未能幸免,出貨量同比也有下滑,多家廠
Top 主站蜘蛛池模板: 醴陵市| 洛南县| 马公市| 榕江县| 武山县| 尖扎县| 蒙山县| 德庆县| 冕宁县| 山西省| 陆良县| 阿勒泰市| 曲阜市| 长岭县| 婺源县| 威远县| 台东县| 苏尼特右旗| 邢台市| 余干县| 德州市| 潜江市| 平邑县| 武清区| 辉南县| 永清县| 岗巴县| 南乐县| 张家港市| 七台河市| 突泉县| 九龙城区| 罗江县| 湛江市| 宁都县| 措勤县| 石家庄市| 从江县| 阿巴嘎旗| 定南县| 广汉市|