js闭包的必要条件及创建和消失(生命周期)

>创建闭包的必要条件:

1.函数嵌套

2.内部函数引用外部函数的变量

3.将内部函数作为返回值返回

>闭包是什么?

就是可以访问外部函数(作用域)中变量的内部函数

> 闭包是什么时候产生的?

- 当调用外部函数时,闭包就已经创建了

- 外部函数每调用一次就会产生一个闭包,

闭包和闭包之间是相互独立的

>闭包是怎么消失的?

- 直到内部函数被GC(垃圾回收)后才消失

function outer() {var n = 0;function inner() {n++;console.log('inner ->',n);}function inner2() {n++;console.log('inner2 ->',n)}// 将内部函数存储到一个对象中返回return {inner:inner,inner2:inner2};}var obj = outer();var obj2 = outer();console.log(obj); // 打印的是 {inner: ƒ inner(), inner2: ƒ inner2()}obj.inner();// 初次n++ 打印的是1obj.inner2();// 二次n++ 因为改变的是同一个变量 打印的是2// obj2是单独的函数调用,所以产生的闭包和obj之间是独立obj2.inner();// 初次n++ 打印的还是1obj2.inner2();// 二次n++ 因为改变的和obj2.inner()改变的是同一个变量 打印的是2console.log('outer',outer); // 打印的是 'outer',f outer(){}...var outer = null // 闭包消失console.log('outer',outer); // 打印的是 'outer',null

闭包在实际的项目中其实是无处不在的,可以算得上是前端工程师的必修课,在面试中也是会经常问到的,希望正在学习的小伙伴们可以熟练掌握。

>控制台数据显示效果:

欢迎关注我的原创文章:小伙伴们!我是一名热衷于前端开发的作者,致力于分享我的知识和经验,帮助其他学习前端的小伙伴们。在我的文章中,你将会找到大量关于前端开发的精彩内容。

学习前端技术是现代互联网时代中非常重要的一项技能。无论你是想成为一名专业的前端工程师,还是仅仅对前端开发感兴趣,我的文章将能为你提供宝贵的指导和知识。

在我的文章中,你将会学到如何使用HTML、CSS和JavaScript创建精美的网页。我将深入讲解每个语言的基础知识,并提供一些实用技巧和最佳实践。无论你是初学者还是有一定经验的开发者,我的文章都能够满足你的学习需求。

此外,我还会分享一些关于前端开发的最新动态和行业趋势。互联网技术在不断发展,新的框架和工具层出不穷。通过我的文章,你将会了解到最新的前端技术趋势,并了解如何应对这些变化。

我深知学习前端不易,因此我将尽力以简洁明了的方式解释复杂的概念,并提供一些易于理解的实例和案例。我希望我的文章能够帮助你更快地理解前端开发,并提升你的技能。

如果你想了解更多关于前端开发的内容,不妨关注我的原创文章。我会不定期更新,为你带来最新的前端技术和知识。感谢你的关注和支持,我们一起探讨交流技术共同进步,期待与你一同探索前端开发的奇妙世界!
 

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

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

相关文章

HIT_OS_LAB4 系统调用

实验内容 编写iam.c和whoami.c iam.c #define __LIBRARY__ #include <unistd.h>// 定义系统调用 iam&#xff0c;参数为字符串 name _syscall1(int, iam, const char*, name);int main(int argc, char **argv) {int wlen 0;// 检查命令行参数数量if (argc < 2) {pri…

ELK+Filebeat

Filebeat概述 1.Filebeat简介 Filebeat是一款轻量级的日志收集工具&#xff0c;可以在非JAVA环境下运行。 因此&#xff0c;Filebeat常被用在非JAVAf的服务器上用于替代Logstash&#xff0c;收集日志信息。实际上&#xff0c;Filebeat几乎可以起到与Logstash相同的作用&…

VMware 系列:您当前正在评估模式下使用ESXi。此许可证将在60 天后过期

您当前正在评估模式下使用ESXi。此许可证将在60 天后过期 本人的ESXI版本为6.7。点击下方的分配许可证:一些序列号仅供参考:6.7VMware vSphere ESXi 7.0 Enterprise PlusVMware vSphere 7 Enterprise Plus with Add-on for KubernetesVMware vCenter 7.0 StandardVMware vSph…

使用C++编写代码实现字符串的拼接操作

C中有多种方法实现字符串拼接&#xff0c;以下是两种常见的方法&#xff1a; 方法一&#xff1a;使用加号“” #include <iostream> #include <string>using namespace std;int main() {string str1 "Hello";string str2 "World";string s…

Android11编译第八弹:root用户密码设置

问题&#xff1a;user版本增加su 指令以后&#xff0c;允许切换root用户&#xff0c;但是&#xff0c;root用户默认没有设置密码&#xff0c;这样访问不安全。 需要增加root用户密码。 一、Linux账户管理 1.1 文件和权限 Linux一切皆文件。文件和目录都有相应的权限&#x…

【Python】(自定义函数)模块的相对路径导入

是我以前写的老文章的升级版&#xff0c;本质上使用exec和sys.path实现相对路径导入。 RelativeImport&#xff1a; __version__1.1.0 __author__Ls_Janimport os import sys import inspectdef RelativeImport(module,*args):#模块导入module为模块所在路径(模块名不需要.py后…

函数式编程:简洁与效率的完美结合

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

还在担心发抖音没素材跟文案?[腾讯云HAI] AIGC带你蹭热度“今年你失去了什么?”

目录 &#x1f433;前言&#xff1a; &#x1f680;了解高性能应用服务 HAI &#x1f47b;即插即用 轻松上手 &#x1f47b;横向对比 青出于蓝 &#x1f424;应用场景-AI作画 &#x1f424;应用场景-AI对话 &#x1f424;应用场景-算法研发 &#x1f680;使用HAI进行…

蓝桥杯day01——根据给定数字划分数组

题目描述 给你一个下标从 0 开始的整数数组 nums 和一个整数 pivot 。请你将 nums 重新排列&#xff0c;使得以下条件均成立&#xff1a; 所有小于 pivot 的元素都出现在所有大于 pivot 的元素 之前 。所有等于 pivot 的元素都出现在小于和大于 pivot 的元素 中间 。小于 piv…

orcad模块化绘制电路

当我们的板子上需要绘制大量的重复电路的时候&#xff0c;手动去绘制就很浪费时间。 orcad 的软件可以进行模块化绘制&#xff0c;将几个原理图包装成一个模块&#xff0c;然后直接去复制模块就可以。 相对来说大大的简化了原理图的设计麻烦程度 下面就是整个的操作流程 最后做…

Router跳转打开新窗口

this.$router.push()无效时&#xff0c;首先要检查路由列表是否正确。 console.log(this.$router.options.routes);跳转 /*本窗口*/// this.$router.push({ path: /filePreview, query: { path: row.path } })/*新打开窗口*/let routeData this.$router.resolve({ path: /fi…

一天之内“三个离职群都满了”;飞行出租车的时代就此开启?丨 RTE 开发者日报 Vol.94

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

每日一练 | 华为认证真题练习Day138

1、IPv6地址FE80::2EO:FCFF:FE6F:4F36属于哪一类&#xff1f; A. 组播地址 B. 任播地址 C. 链路本地地址 D. 全球单播地址 2、如果IPv6的主机希望发出的报文最多经过10台路由器转发&#xff0c;则应该修改IPv6报文头中的哪个参数&#xff1f; A. Next Header B. Version …

【考研or就业】关键的时间节点,暑期实习/秋招/春招大揭秘(文末附时间线图)

【考研or就业】关键的时间节点&#xff0c;暑期实习/秋招/春招大揭秘 一些引言考研初复试暑期实习秋招春招 【考研or就业】关键的时间节点&#xff0c;暑期实习/秋招/春招大揭秘&#xff08;视频版&#xff09; 一些引言 ● 之前我个人的选择是比较离谱的那种&#xff0c;考研…

【实验】配置用户通过IPv6方式上网

【赠送】IT技术视频教程&#xff0c;白拿不谢&#xff01;思科、华为、红帽、数据库、云计算等等https://xmws-it.blog.csdn.net/article/details/117297837?spm1001.2014.3001.5502【微/信/公/众/号&#xff1a;厦门微思网络】 组网需求 运营商为企业分配了WAN侧的IPv6地址11…

SageMath安装

Sagemath工具是免费开源的&#xff0c;针对数学计算的一个工具。 网页版免安装&#xff1a;https://sagecell.sagemath.org/ Sagemath是根据Linux系统编写的&#xff0c;所以Windows上使用的话&#xff0c;会创建一个Linux系统运行。 1. 安装 Windows本地安装参考&#xff1…

数字人应用行业有哪些?

随着人工智能和虚拟形象技术的不断发展&#xff0c;数字人正运用于各行各业。数字人是通过模型训练和虚拟形象技术创造的虚拟实体&#xff0c;具有自己的外貌、声音和行为。本文将介绍数字人应用行业的几个主要领域&#xff0c;并探讨其重要意义。 一、直播带货和电商领域 1. …

oracle闪回恢复表数据

oracle闪回恢复表数据 1.打开监听和数据库&#xff0c;进入需要操作的表的所属用户下 [oraclemydb ~]$ lsnrctl start [oraclemydb ~]$ sqlplus / as sysdba SQL> startup SQL> conn test/123456 SQL> select * from test1&#xff1b;2.删除任意数据&#xff1a; …

WIFI模块(esp-01s)实现天气预报代码实现

目录 前言 实现图片 一、串口编程的实现 二、发送AT指令 esp01s.c esp01s.h 三、数据处理 1、初始化 2、cjson处理函数 3、核心控制代码 四、修改堆栈大小 前言 实现图片 前面讲解了使用AT指令获取天气与cjson的解析数据&#xff0c;本章综合将时间显示到屏幕 一、…

MyBatis的解析和运行原理

文章目录 MyBatis的解析和运行原理MyBatis的工作原理 MyBatis的解析和运行原理 MyBatis编程步骤是什么样的&#xff1f; 1、 创建SqlSessionFactory 2、 通过SqlSessionFactory创建SqlSession 3、 通过sqlsession执行数据库操作 4、 调用session.commit()提交事务 5、 调用…