JS进阶:闭包

news/2024/9/24 21:29:13/

闭包作用:封闭数据,提供操作,外部也可以访问函数内部的变量

闭包的基本格式:

外层函数使用内部变量

  <script>function order(){let a=10function fn(){console.log(a);}return fn}const fun=order()fun()</script>

简化一下

    function order(){let a=10return function fn(){console.log(a);}   }const fun=order()fun()//调用fun

闭包应用:实现数据的私有

比如,我们要做个统计函数调用次数,函数调用一次,就++

    let count = 1;function fun() {count++console.log(`函数被调用${count}`);}fun()

但是,这个count时全局变量,很容易被修改。

用闭包改进如下

  <script>function fn() {let count = 1;function fun() {count++console.log(`函数被调用${count}`);}return fun()}const result =fn()result//2result//3</script>

实现了数据的私有,无法直接修改count。

总结:

1.怎么理解闭包?

  • 闭包=内层函数+外层函数的变量

2.闭包的作用?

  • 封闭数据,实现数据私有,外部也可以访问函数内部的变量闭包很有用,因为它允许将函数与其所操作的某些数据(环境)关联起来

3.闭包可能引起的问题?

  • 内存泄漏

http://www.ppmy.cn/news/1470018.html

相关文章

【深度学习】stable-diffusion-webui AUTOMATIC1111 的参数解释翻译

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Command-Line-Arguments-and-Settings 参数命令值默认值描述-h, --helpNoneFalse显示帮助信息并退出–exit安装后终止–data-dirDATA_DIR./存储所有用户数据的基本路径–configCONFIGconfigs/stable-diffusion/…

Linux安装并配置Java

1、Linux操作系统安装Java 1.1、下载Java JDK解压包 官方提供的网址&#xff1a; 选择Linux版本 下载列表选择最后一项&#xff0c;通过解压方式安装 倒数第二项是以rpm方式进行安装&#xff0c;另一篇安装MySQL时就是用到rpm方法。 1.2、解压JDK tar -zxvf jdk-8u411-lin…

Python自动化(3)——鼠标模拟

Python自动化(3)——鼠标模拟 前台鼠标模拟 鼠标模拟和键盘模拟类似&#xff0c;也是分前台和后台模拟。话不多说直接&#xff0c;上代码&#xff1a; import time import win32api import win32con import win32gui from ctypes import *MOUSEEVENTF_LEFTDOWN 0x2 MOUSEEV…

ue 生命周期详解及实例分析

Vue.js 是一个流行的前端框架&#xff0c;它具有丰富的生命周期钩子函数&#xff0c;用于管理组件的创建、挂载、更新和销毁等过程。理解 Vue 生命周期对于开发高质量的 Vue 应用至关重要。本文将深入探讨 Vue 生命周期的各个阶段&#xff0c;并结合实例进行详细分析。 Vue 生命…

Linux常⽤服务器构建-samba

目录 1. 介绍 2. 安装 3. 配置 3.1 创建存放共享⽂件的路径 3.2 创建samba账户 4 重启samba 5. 访问共享⽂件 5.1 mac下访问⽅式 5.2 windows下访问⽅式 1. 介绍 Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的⼀个免费软件&#xff0c;能够完成在 windows 、 mac 操作系统…

Day07-06_13【CT】LeetCode手撕—1. 两数之和

目录 题目1-思路2- 实现⭐1. 两数之和——题解思路 3- ACM实现 题目 原题连接&#xff1a;1. 两数之和 1-思路 哈希表 利用哈希表存储 key 数组元素值 ——> value 数组下标遍历数组 2- 实现 ⭐1. 两数之和——题解思路 class Solution {public int[] twoSum(int[] nums…

Python项目开发实战:网站图片抓取工具(案例教程)

一、项目背景与需求 随着互联网的发展,网站上的图片资源日益丰富,但有时候我们可能希望将某个网站上的图片批量下载到本地,以便进行后续的分析、处理或备份。因此,开发一个网站图片抓取工具就显得尤为重要。本项目旨在使用Python语言开发一个功能强大、易于使用的网站图片抓…

GPU性能相关的工具

GPU性能相关的工具 GPU的性能测试工具比较多&#xff0c;已知的各个开发厂家是有自己开发的性能测试工具&#xff0c;一般市场上开源或通用的性能测试工具&#xff0c;主要是跑定制的渲染场景&#xff0c;统计平均帧率&#xff0c;经过包装得到跑分值。 整体上可以分成两类&am…