前端面试宝典---闭包

闭包介绍

使用闭包:

  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);

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPT4O画图玩法案例,不降智,非dalle

网址如下&#xff1a; 玩法1&#xff1a;吉卜力&#xff08;最火爆&#xff09; 提示词&#xff1a;请将附件图片转化为「吉卜力」风格&#xff0c;尺寸不变 玩法2&#xff1a;真人绘制 提示词&#xff1a;创作一张图片&#xff0c;比例4:3&#xff0c;一个20岁的中国女孩…

4.12~4.14【Q】cv homework6

我正在写GAMES101作业6&#xff0c;在这段代码中&#xff0c;我十分想知道inline Intersection Triangle::getIntersection(Ray ray) 是由哪个函数&#xff0c;哪段代码调用的&#xff1f;什么是Inline&#xff1f;详细解释&#xff0c;越细节越好 我正在写GAMES101作业6&…

MATLAB双目标定

前言&#xff1a; 现在有许多双目摄像头在出厂时以及标定好&#xff0c;用户拿到手后可以直接使用&#xff0c;但也有些双目摄像头在出厂时并没有标定。因而这个时候就需要自己进行标定。本文主要介绍基于matlab工具箱的自动标定方式来对双目相机进行标定。 1、MATLAB工具箱标…

visual studio 常用的快捷键(已经熟悉的就不记录了)

以下是 Visual Studio 中最常用的快捷键分类整理&#xff0c;涵盖代码编辑、调试、导航等核心场景&#xff1a; 一、生成与编译 ​生成解决方案 Ctrl Shift B 一键编译整个解决方案&#xff0c;检查编译错误&#xff08;最核心的生成操作&#xff09;​编译当前文件 Ctrl F…

Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

今天写项目的时候碰到一个报错&#xff0c;在网上查找到了解决方法&#xff0c;这里备份一下。防止下次再次遇到 原文章链接&#xff1a;Sass import rules are deprecated and will be removed in Dart Sass 3.0.0. 报错内容如下&#xff1a; Deprecation Warning: Sass i…

【QT】QWidget 概述与核心属性(API)

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Qt 目录 一&#xff1a;&#x1f525; 控件概述 &#x1f98b; 控件体系的发展阶段 二&#xff1a;&#x1f525; QWidget 核心属性 &#x1f98b; 核心属性概览&#x1f98b; 用件可用&#xff08…

Redis 在处理并发请求时,如何保证高效性和数据一致性

1. 单线程模型&#xff08;核心命令处理&#xff09; 单线程优势&#xff1a;Redis 的核心命令处理是单线程的&#xff08;基于内存操作&#xff0c;避免多线程竞争&#xff09;&#xff0c;所有命令按顺序执行&#xff0c;天然避免了多线程的锁竞争和上下文切换开销。非阻塞 …

flutter-Text等组件出现双层黄色下划线的问题

文章目录 1. 现象2. 原因3. 解决方法 1. 现象 这天我正在写Flutter项目的页面功能&#xff0c;突然发现我的 Text 文字出现了奇怪的样式&#xff0c;具体如下&#xff1a; 文字下面出现了双层黄色下划线文字的空格变得很大&#xff0c;文字的间距也变得很大 我百思不得其解&a…

cursor+高德MCP:制作一份旅游攻略

高德开放平台 | 高德地图API (amap.com) 1.注册成为开发者 2.进入控制台选择应用管理----->我的应用 3.新建应用 4.点击添加Key 5.在高德开发平台找到MCP的文档 6.按照快速接入的步骤&#xff0c;进行操作 一定要按照最新版的cursor, 如果之前已经安装旧的版本卸载掉重新安…

使用 IP 代理改 IP 后注意事项如何防封号

在使用一键换IP软件辅助网络营销账号切换时&#xff0c;需注意以下关键事项以确保账号安全并降低封号风险。 一、IP有效性及质量验证 确保更换的IP地址有效且质量高&#xff0c;低质量或失效的IP可能导致账号存活时间缩短。优先选择动态住宅IP&#xff08;如“兔子IP代理”提…

qt designer 创建窗体选择哪种屏幕大小

1. 新建窗体时选择QVGA还是VGA 下面这个图展示了区别 这里我还是选择默认&#xff0c;因为没有特殊需求&#xff0c;只是在PC端使用

数据可视化 —— 折线图应用(大全)

一、导入需要的库 # Matplotlib 是 Python 最常用的绘图库&#xff0c;pyplot 提供了类似 MATLAB 的绘图接口 import matplotlib.pyplot as plt import numpy as np import pandas as pd 二、常用的库函数 plt.plot(x轴,y轴)&#xff1a;plot()是画折线图的函数。 plt.xlabe…

ubuntu 20.04 安装源码编译 ros humble过程

公司要兼容ros1还需要ros2 这个时候不得不使用ubuntu20.04 安装 humble 但实际上在20.04上安装humble是需要在源码编译的。 根据这个帖子 https://blog.csdn.net/m0_62353836/article/details/129730981 重写一份,以应对无法下载的问题 系统配置 #检查是否为UTF-8编码,是则跳…

CVPR‘25 SOTA——GoalFlow论文精读

1&#xff09;第一遍___粗读 Q: 这篇论文试图解决什么问题&#xff1f; A: 这篇论文提出了一个名为 GoalFlow 的端到端自动驾驶方法&#xff0c;旨在解决自动驾驶场景中高质量多模态轨迹生成的问题。具体而言&#xff0c;它试图解决以下问题&#xff1a; 轨迹选择的复杂性&am…

关于 CSDN的C知道功能模块 的详细解析,包括 新增的AI搜索(可选深度思考) 和 智能体功能 的具体说明及对比分析

以下是关于 CSDN的C知道功能模块 的详细解析&#xff0c;包括 新增的AI搜索&#xff08;可选深度思考&#xff09; 和 智能体功能 的具体说明及对比分析&#xff1a; 一、C知道核心功能模块详解&#xff08;基础功能&#xff09; &#xff08;参考前文内容&#xff0c;此处略…

forms实现快读阅读器

forms实现快读阅读器 主要功能包括&#xff1a; ​​1.文本自动分块显示​​&#xff1a;按设定的速度逐词显示文本内容。 ​​2.阅读控制​​&#xff1a;开始/停止按钮以及回车键控制。 ​​3.界面自定义​​&#xff1a;包括字体、颜色&#xff08;前景色和背景色&#xff…

PowerBI 条形图显示数值和百分比

数据表: 三个度量值 销售额 VAR Sales SUM(销量表[销售量]) RETURNIF(ISBLANK(sales), 0, sales) //希望Y轴显示所有产品(没有记录显示0)就加这个代码&#xff0c;不希望显示就不加//注意, 因为Y轴显示的产品&#xff0c;会被筛选&#xff0c;所以用ALLSELECTED来获取当前筛…

python: audioFlux XXCC 提取梅尔频率倒谱系数 MFCC

承上一篇&#xff1a;python&#xff1a;audioFlux 使用教程 XXCC: 倒谱系数&#xff0c;支持所有频谱类型. 可以提取梅尔频率倒谱系数&#xff08;MFCC&#xff09; Cepstrum coefficients, supports all spectrum types. 以下是使用 audioflux 库中 XXCC 类计算倒谱系数…

为 docker 拉取镜像配置代理

为 Docker 配置代理&#xff0c;有 两个层面 的操作&#xff1a;(1) Docker 守护进程&#xff08;用于拉取镜像等操作&#xff09;&#xff0c;(2) Docker 容器内部&#xff08;容器内应用的网络流量&#xff09;。 我们这篇文章着重于前者&#xff0c;以下是详细步骤&#xff…

最新的es版本忘记密码,重置密码

刚刚安装了最新的es版本,就忘了密码,怎么重置密码呢? 一、进入es的斌目录 #进入es文件/bin 目录 ./elasticsearch-reset-password -u elastic 二 、输入对应的密码 然后再次访问 我的是去掉了ssl的访问 三、如果报错:解决 [main] WARN