当前位置: 首页 > news >正文

JavaScript中的闭包

闭包

闭包是什么

  1. 内部函数(嵌套函数)能够访问其外部函数(父函数)的变量,即使外部函数执行完毕后,这些变量仍会保留在内存中,因为内部函数保持着对它们的引用,从而防止了垃圾回收机制回收这些变量。
  2. 闭包是函数与其词法环境(包括外部函数的变量)的组合,这种组合使得函数能够记住并访问其被定义时的环境。
  3. 在JavaScript中,内层函数(嵌套函数)具有访问其外层函数作用域的能力,这种特性是通过闭包实现的,它允许内部函数访问和操作在外部函数中定义的变量。

闭包的几种用法

// 函数作为返回值的场景
function mail(){let content = "cui"return function (){console.log(content)}
}const envelop = mail()
envelop() // 拿到内部的值// 函数作为参数的时候
let content;
function envelop(fn){content = 1;fn();
}function mail(){console.log(content)
}
envelop(mail)// 函数的嵌套
let counter = 0;function outerFn(){function innerFn(){counter++;console.log(counter)}return innerFn;
}
outerFn()();

利用闭包实现私有变量

function createStack(){return {items:[]push(item){this.item.push(item)}
}const stack = {item:[],push:function(){}
}function createStack(){const items = [];return {push(item){items.push(item)}}
}

相关文章:

JavaScript中的闭包

闭包 闭包是什么 内部函数(嵌套函数)能够访问其外部函数(父函数)的变量,即使外部函数执行完毕后,这些变量仍会保留在内存中,因为内部函数保持着对它们的引用,从而防止了垃圾回收机制回收这些变量。闭包是函数与其词法环境(包括外…...

python画图:matpolt,设置图片尺寸,字体大小,副坐标轴,保存

文章重心: 写论文的时候,图片的大小,字体的大小,副坐标轴,这些都是很重要的因素,保存一下之前用过的画图代码单图多图(两个子图)堆叠柱状图两个Y轴的图问题: python保存的时候,我选择的是svg,但是这样图片会比较大,查重什么的需要把图片都删了(一般有文件大小限制…...

如果突然失业,靠这个项目也能养活自己,6天收入3K

在前两天,我与两位好友相约外出就餐。当时正值雨天,我们便选择了一家大排档,边品尝美食边畅谈人生。聊得尽兴,直到凌晨一点多才回到家中。其中一位朋友最近刚刚遭遇裁员,为了寻找新的工作机会,他已经经历了…...

【OpenCV 基础知识 13】高斯平滑处理图像

函数 cvSmooth 可使用简单模糊、简单无缩放变换的模糊、中值模糊、高斯模糊、双边滤波的任何一种方法平滑图像。每一种方法都有自己的特点以及局限。 没有缩放的图像平滑仅支持单通道图像,并且支持8位到16位的转换(与cvSobel和cvLaplace相似)…...

web安全渗透测试工具篇(二):sqlmap常用命令和nmap常用命令

web安全渗透测试工具篇 1. web安全渗透测试-工具使用-sqlmap1.1 SQLMap 的详细使用1.1.1 SQLMap 支持五种不同的注入模式1.2.SQLmap的模块划分1.2.1.Target目标1.2.2.Request请求1.2.3.Optimization(优化):1.2.4.Injection(注入):1.2.5.Detection(检测):1.2.6.Techniques…...

STM32 USART的字符编码(发送器的实现逻辑)

目录 概述 1 字符编码 1.1 USART 字符说明 1.2 字长编程 2 发送器 2.1 字符发送 2.2 可配置的停止位 2.3 配置停止位方法 3 单字节通信 4 中断字符 5 空闲字符 概述 本文主要讲述STM32 USART的发送端功能实现的原理,包括字节编码长度,发送器…...

[市赛2024-X2]自习室

Description 临近期末考试,自习室的学生来来往往。 这可忙坏了管理自习室的大爷,他随时准备开关灯。 自习室只要有学生来,就需要开灯。一开始没有学生来之前灯是关闭的。 周日这一天共有 n 位同学来自习,第 i 个同学将在时间 …...

Spring ----> IOC

文章目录 一、 Spring 是一个包含众多工具的IoC容器二、 什么是IOC以及好处三、 如何实现loc思想四、Spring提供的实现loC的方法 --- 类注解方法注解4.1 类注解类注解概念介绍类注解的使用 4.2 方法注解Bean 一、 Spring 是一个包含众多工具的IoC容器 场景解析:首先…...

AI重塑保险业未来:机器学习在风险评估、欺诈检测与客户服务中的深度应用

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…...

某某某加固系统分析

某某某加固系统内核so dump和修复: 某某某加固系统采取了内外两层native代码模式,外层主要为了保护内层核心代码,从分析来看外层模块主要用来反调试,释放内层模块,维护内存模块的某些运行环境达到防止分离内外模块&am…...

嵌入式之音频基础知识

声音特性 1、响度:人主观上感觉声音的大小(俗称音量),由“振幅”和人离声源的距离决定,振幅越大响度越大,人和声源的距离越小,响度越大; 2、音调:声音的高低&#xff0…...

如何做好软件项目的沟通管理

如何做好软件项目的沟通管理 软件项目的沟通管理是确保项目信息在团队成员、利益相关者和相关群体之间有效流通的过程。良好的沟通是项目成功的关键,在项目开始时,需要制定详细的沟通计划,包括沟通的目的、对象、内容、频率和渠道等信息。 …...

linmux

了了了了了了了了了了了了了了...

Vue3学习-vue-router之路由传参

传参方案一&#xff1a;RouterLink 字符串 //传值 <RouterLink to"/page?a1&b2">{{ RouterLink 字符串传参 }}</RouterLink> //取值 import { toRefs } from vue import { useRoute } from vue-router const { query} toRefs(useRoute()) console.…...

ubuntu20.04 10分钟搭建无延迟大疆无人机多线程流媒体服务器

1.使用效果 无人机画面 2.服务器视频端口 3.使用教程 3.1.下载ubuntu对应软件包&#xff1a;系统要求ubuntu16以上 3.2修改端口&#xff08;config.xml文件&#xff09; 3.3启动服务 目录下输入&#xff1a;终端启动&#xff1a;./smart_rtmpd 后台启动&#xff1a;nohup ./…...

hugging face笔记:PEFT

1 介绍 PEFT (Parameter-Efficient Fine Tuning) 方法在微调时冻结预训练模型参数&#xff0c;并在其上添加少量可训练的参数&#xff08;称为适配器&#xff09;这些适配器被训练用来学习特定任务的信息。这种方法已被证明在内存效率和计算使用上非常高效&#xff0c;同时能产…...

作业5.26

定义一些常量和数据结构来存储用户信息和消息。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>#define MAX_USERS 100 // 最大用户数 #define MAX_M…...

银河麒麟服务器系统xshell连接之后主动断开,报错socket error event:32 Error:10053问题分析

银河麒麟服务器系统xshell连接之后主动断开&#xff0c;报错socket error event&#xff1a;32 Error&#xff1a;10053问题分析 一 问题描述二 系统环境三 问题分析3.1 与正常机器对比sshd文件内容以及文件权限3.2 检查同网段内是否配置多个相同的IP地址 四 后续建议 一 问题描…...

蓝桥杯算法心得——李白打酒(加强版)

大家好&#xff0c;我是晴天学长&#xff0c;记忆化搜索&#xff0c;找到技巧非常重要&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 2) .算法思路 1.memo三维表示记录的结果 3&#xff09;.算法步骤 1…...

java练习2

题目要求 创建一个Color枚举类有RED,BLUE,BLACK,YELLOW,GREEN这五个枚举值/对象Color有三个属性redValue&#xff0c;greenValue&#xff0c;blueValue创建构造方法&#xff0c;参数包括这三个属性每个枚举值都要给这三个属性赋值&#xff0c;三个属性对应的值分别是red&#…...

Applicative Functor应用指南:mostly-adequate-guide-chinese中的瓶中之船与协调激励

Applicative Functor应用指南&#xff1a;mostly-adequate-guide-chinese中的瓶中之船与协调激励 【免费下载链接】mostly-adequate-guide-chinese 函数式编程指南中文版 项目地址: https://gitcode.com/gh_mirrors/mo/mostly-adequate-guide-chinese 在函数式编程的世界…...

LumiPixel Canvas Quest光影魔法:不同光照条件下的人像生成效果

LumiPixel Canvas Quest光影魔法&#xff1a;不同光照条件下的人像生成效果 1. 光影的魅力&#xff1a;用光绘画的艺术 摄影圈有句老话&#xff1a;"摄影是用光的艺术"。这句话在AI生成领域同样适用。LumiPixel Canvas Quest通过精准的光照控制&#xff0c;让创作者…...

动态规划——01背包问题、完全背包(python、一维DP)

01-背包问题&#xff1a;从最大容量开始&#xff0c;从后往前遍历背包容量每种物品只能选择一次。物品种类为n&#xff0c;背包容量为k。从最大容量开始&#xff0c;从后往前遍历背包容量&#xff0c;小于当前物品容量的背包大小不遍历&#xff0c;即遍历到w[i]即可。&#xff…...

JavaScript中WebWorker实现多线程计算避开主线程

Web Worker 是 JavaScript 实现多线程计算的核心机制&#xff0c;通过独立线程执行耗时逻辑&#xff08;如大数据处理、加密解密等&#xff09;&#xff0c;避免阻塞主线程&#xff1b;需单独 JS 文件编写纯计算逻辑&#xff0c;用 postMessage 通信&#xff0c;仅支持结构化克…...

Java全核心-阿里大厂面试-Gemini版

完善更新中......一、Java 核心基础1、Java 四大引用与 ThreadLocal 深度拷问【核心连环炮】面试官&#xff1a;说一下 Java 的四大引用及其实际业务场景&#xff1f;面试官&#xff1a;ThreadLocal 为什么要用弱引用&#xff1f;不用行不行&#xff1f;面试官&#xff1a;既然…...

如何划分接口文档?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快1、首先最主要的就是要分析接口测试文档&#xff0c;每一个公司的测试文档都是不一样的。具体的就要根据自己公司的接口而定&#xff0c;里面缺少的内容自己需要与开…...

AI写论文软件哪个最好?精选7款AI论文生成神器,轻松掌握毕业论文!

你是否曾在深夜面对空白文档&#xff0c;为论文框架和文献综述绞尽脑汁&#xff1f;从本科生到博士生&#xff0c;从职场评职称到科研发表&#xff0c;论文写作始终是绕不开的挑战。别担心&#xff01;如今AI论文写作工具已成为提升效率的利器&#xff0c;尤其是一些专业工具能…...

007、记忆(Memory)机制:让AI拥有对话上下文的能力

007、记忆&#xff08;Memory&#xff09;机制&#xff1a;让AI拥有对话上下文的能力 昨天深夜调试一个对话机器人&#xff0c;用户问“今天的天气怎么样&#xff1f;”&#xff0c;系统返回了天气信息&#xff1b;接着用户又问“那明天呢&#xff1f;”&#xff0c;结果机器人…...

Flutter 框架跨平台鸿蒙开发 - 亲子故事共创

亲子故事共创应用欢迎加入开源鸿蒙跨平台社区&#xff1a; https://openharmonycrossplatform.csdn.net 一、项目概述 运行效果图1.1 应用简介 亲子故事共创是一款亲子教育类应用&#xff0c;核心理念是"父母孩子一起创作专属故事书"。通过角色设定、剧情分支、插图生…...

Pug模板引擎在StartBootstrap Freelancer中的应用与优化:提升前端开发效率的完整指南

Pug模板引擎在StartBootstrap Freelancer中的应用与优化&#xff1a;提升前端开发效率的完整指南 【免费下载链接】startbootstrap-freelancer A flat design, one page, MIT licensed Bootstrap portfolio theme created by Start Bootstrap 项目地址: https://gitcode.com/…...