前端面试宝典---闭包

news/2025/4/22 2:42:22

闭包介绍

使用闭包:

  1. 在函数内声明一个变量,避免外部访问
  2. 在该函数内再声明一个函数访问上述变量(闭包)
  3. 返回函数内部的函数
  4. 使用完毕建议闭包函数=null;译放内存
function createCounter() {let count = 0;return function () {count++;return count;};
}let counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
counter = null;

闭包应用场景

在 ES6 引入 let 和 const 之前,JavaScript 没有块级作用域,只有函数作用域。可以使用闭包来模拟块级作用域。以下是一个经典的循环中使用闭包的例子:

// 不使用闭包的情况
function printNumbersWithoutClosure() {for (var i = 0; i < 5; i++) {setTimeout(function () {console.log(i);}, i * 1000);}
}// 使用闭包的情况
function printNumbersWithClosure() {for (var i = 0; i < 5; i++) {(function (index) {setTimeout(function () {console.log(index);}, index * 1000);})(i);}
}// 测试不使用闭包的情况
console.log('不使用闭包的情况:');
printNumbersWithoutClosure();// 测试使用闭包的情况
setTimeout(function () {console.log('使用闭包的情况:');printNumbersWithClosure();
}, 5000);

在这里插入图片描述


https://dhexx.cn/news/show-5496908.html

相关文章

打造AI应用基础设施:Milvus向量数据库部署与运维

目录 打造AI应用基础设施&#xff1a;Milvus向量数据库部署与运维1. Milvus介绍1.1 什么是向量数据库&#xff1f;1.2 Milvus主要特点 2. Milvus部署方案对比2.1 Milvus Lite2.2 Milvus Standalone2.3 Milvus Distributed2.4 部署方案对比表 3. Milvus部署操作命令实战3.1 Milv…

Oracle数据库数据编程SQL<9.3 数据库逻辑备份和迁移Data Pump (EXPDP/IMPDP) 导出、导入补充>

Oracle Data Pump 是 Oracle 10g 引入的高效数据迁移工具,相比传统的 EXP/IMP 工具,它提供了更强大的功能和显著的性能提升。以下是对 EXPDP 和 IMPDP 工具的全面讲解。 目录 一、高级功能扩展 1. 数据过滤与转换 2. 加密与安全 二、性能调优进阶 1. 并行处理优化 2. …

服务器本地搭建

socket函数 它用于创建一个新的套接字&#xff08;socket&#xff09;。 函数原型 #include <sys/socket.h> int socket(int domain, int type, int protocol);参数解释 domain&#xff1a;它指定了通信所使用的协议族&#xff0c;常见的取值如下&#xff1a; AF_INET…

【Python爬虫】详细工作流程以及组成部分

目录 一、Python爬虫的详细工作流程 确定起始网页 发送 HTTP 请求 解析 HTML 处理数据 跟踪链接 递归抓取 存储数据 二、Python爬虫的组成部分 请求模块 解析模块 数据处理模块 存储模块 调度模块 反爬虫处理模块 一、Python爬虫的详细工作流程 在进行网络爬虫工…

cryptozombies合约7

我们的合约几乎就要完成了&#xff01;让我们加上一个事件. 事件 是合约和区块链通讯的一种机制。你的前端应用“监听”某些事件&#xff0c;并做出反应。 例子: // 这里建立事件 event IntegersAdded(uint x, uint y, uint result);function add(uint _x, uint _y) public…

前端面试宝典---原型链

引言----感谢大佬的讲解 大佬链接 原型链示意图 原型链问题中需要记住一句话&#xff1a;一切变量和函数都可以并且只能通过__proto__去找它所在原型链上的属性与方法 原型链需要注意的点 看上图可以发现 函数&#xff08;构造函数&#xff09;也可以通过__proto__去找到原…

从Ampere到Hopper:GPU架构演进对AI模型训练的颠覆性影响

一、GPU架构演进的底层逻辑 AI大模型训练效率的提升始终与GPU架构的迭代深度绑定。从Ampere到Hopper的演进路径中&#xff0c;英伟达通过‌张量核心升级‌、‌显存架构优化‌、‌计算范式革新‌三大技术路线&#xff0c;将LLM&#xff08;大语言模型&#xff09;训练效率提升至…

【信息安全】黑芝麻A1000芯片安全启动方案

基于黑芝麻A1000芯片的安全启动方案实现指南: 一、安全启动流程架构设计 // 启动阶段状态机定义(基于A1000芯片手册) typedef enum {ROM_BOOT = 0x01, // BootROM验证 SPL_VERIFY = 0x02, // 二级加载器验证 ATF_SIGN_CHECK = 0x03, // ARM Trusted Firmware验证 OS_LOADE…

【DDR 内存学习专栏 1.3.1 -- DDR 的 Bank 及 burst 访问】

文章目录 DDR RankRank 读写 访问加速Burst 模式 DDR Rank 电脑内存条&#xff0c;也被称为DIMM条&#xff0c;是由多个电路板和芯片组成&#xff0c;这些组件被设计成可以通过内存通道与内存控制器进行连接。在一组可以被一个内存通道同时访问的芯片中&#xff0c;我们称之为…

大数据学习栈记——Redis安装及其使用

本文介绍NoSQL技术&#xff1a;Redis的安装及其使用。操作系统&#xff1a;Ubuntu24.04 Redis介绍 Redis是一个键值&#xff08;key-value&#xff09;存储系统&#xff0c;即键值对非关系型数据库&#xff0c;和Memcached类似&#xff0c;目前正在被越来越多的互联网公司采用…