js 闭包

一、闭包的作用

  1. 实现公有变量 — 函数累加器
  2. 可以做缓存(存储结构)
  3. 可以实现封装,属性私有化
  4. 模块化开发,防止污染全局变量

闭包实现 1 + … + 100

function add() {var count = 0;function demo() {count++;console.log(count);}return demo;
}var counter = add();
counter();for (let i = 0; i < 100; i++) {counter();
}

闭包对变量影响

function test() {let num = 100;function a() {num++;console.log(num);}function b() {num--;console.log(num);}return [a, b];
}var myArr = test();myArr[0](); // 101
myArr[1](); // 100

二、闭包的弊端

当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄漏(内存被占用的多了,剩的内存就少了。反着理解)

用立即执行函数,解决闭包变量不释放

function test() {let arr = [];for (let i = 0; i < 10; i++) {// 闭包触发// for (let i = 0; i < 10; i++) {//     arr[i] = function() {//         document.write(i + ' '); // 十个函数共用一个闭包//     }// }// 闭包解决(function(j) {arr[i] = function() {document.write(j + ' '); // 现在每个立即执行函数形参 j 的值都不一样,用一次就销毁了}})(i);}return arr;}

或者是用 let | const 来解决闭包问题

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

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

相关文章

java实现 支付宝支付

文章目录支付宝开放平台官网创建demo实例分析效果图实例代码AlipayConfigPaymentControllerOrderService OrderServiceImplapplicationContext-alipay.xml支付宝开放平台官网 用自己手机支付宝扫码登录 根据页面提示填写自己真实信息 进去之后 东西主要用的就在这里 sdk 在 …

python读取git日志_Python获取gitlab提交历史!

工作中的场景&#xff0c;记录下来分享给大家。需求公司私有部署了gitlab保存公司代码&#xff0c;希望在发布系统中可以展示项目在gitlab的提交历史&#xff0c;供发布人员选择提交commit记录并构建对应的docker镜像。不可行的方案但是很快我就发现&#xff0c;这个方案是不可…

js 对象和构造函数

一、对象的创建方法 题外话&#xff1a; java c 同样能生产出对象&#xff0c;但是是死的 JavaScript 生产出的对象是活的&#xff0c;更像是人的生长过程&#xff0c;后天可以增加和删除方法 用字面量创建 var obj {};二、对象的增删改 增 let obj {};obj.name 张三; …

Java接入支付宝支付教程

Java接入支付宝支付教程 一、创建应用 1.登录支付宝开放平台 支付宝开放平台网址&#xff1a;https://open.alipay.com/platform/developerIndex.htm 2.创建一个应用 ? 图1 二 、设置应用密钥 1.下载安装支付宝开放平台助手 软件下载地址&#xff1a;https://gw.alipay…

虚拟同步发电机_测量虚拟同步发电机惯量与阻尼系数的新方法

华北电力大学分布式储能与微网河北省重点实验室的研究人员颜湘武、王俣珂、贾焦心、王德胜、张波&#xff0c;在2019年第7期《电工技术学报》上撰文(论文标题为“基于非线性最小二乘曲线拟合的虚拟同步发电机惯量与阻尼系数测量方法”)指出&#xff0c;虚拟同步发电机(VSG)技术…

对象的包装类

一、首先抛出疑问&#xff1a; 原始值为啥添加属性而且不会报错 &#xff1f;&#xff1f;&#xff1f; var str a; str.name abc; console.log(str.name); // 就是因为原始值要经过包装类 var str abc; str.length 2; // new String(abc).length 2; delete console.lo…

expdp导出 schema_Oracle使用数据泵在异机之间导出导入多个 schema

需求&#xff1a;A机中的oracle有pingchuan和zte两个用户(schema)&#xff0c;这两个schema中都有数据。B机刚装完oracle数据库并建好实例&#xff0c;没有数据。A机的IP为192.168.1.131&#xff0c;B机的IP为192.168.1.137。要求把A机中的pingchuan和zte导入到B机中。(1)A机导…

SpringBoot整合阿里云OSS上传文件

一、需求分析 文件上传是一个非常常见的功能&#xff0c;就是通过IO流将文件写到另外一个地方&#xff0c;这个地方可以是项目下的某个文件夹里&#xff0c;或者是本地电脑某个盘下面&#xff0c;还可以是云服务OSS里面&#xff0c;这里就是我要讲到的OSS&#xff0c;我写的是…

js 原型以及原型链

原型编程的基本规则&#xff1a; 所有的数据都是对象要得到一个对象&#xff0c;不是通过实例化类&#xff0c;而是找到一个对象作为原型并克隆它对象会记住它的原型如果对象无法相应某个请求&#xff0c;它会把这个请求委托给它自己的原型 直接上图 一、继续说说构造函数 …

python tfidf特征变换_使用sklearn提取文本的tfidf特征

from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, TfidfTransformercorpus [This is the first document.,This is the second second document.,And the third one.,Is this the first document?,]CountVectorizer是通过fit_transform函数将…

SpringBoot整合阿里云OSS文件上传、下载、查看、删除

SpringBoot整合阿里云OSS文件上传、下载、查看、删除 该项目源码地址&#xff1a;https://github.com/ggb2312/springboot-integration-examples &#xff08;其中包含SpringBoot和其他常用技术的整合&#xff0c;配套源码以及笔记。基于最新的 SpringBoot2.1&#xff0c;欢迎各…

js 继承发展史

一、传统模式 – 利用原型链 Grand.prototype.lastName 王五; function Grand() {} var grand new Grand();Father.prototype grand; function Father() {this.name 李四 } var father new Father();Son.prototype father; function Son() {} var son new Son(); conso…

vue 调用webservice_js跨域调用WebService的简单实例

步骤1. 在web.config中的system.web节点里加入步骤2.webservice代码using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services;using System.Web.Mvc;namespace WebService{/// /// WebService1 的摘要说明/// [WebServic…

SpringBoot整合oss实现文件的上传,查看,删除,下载

springboot整合oss实现文件的上传,查看,删除,下载 1.什么是对象存储 OSS? 答&#xff1a;阿里云对象存储服务&#xff08;Object Storage Service&#xff0c;简称 OSS&#xff09;&#xff0c;是阿里云提供的海量、安全、低成本、高可靠的云存储服务。其数据设计持久性不低…

属性的表示方法和对象的枚举

对象 一、对象.属性 var obj {name : mary,age : 18 };console.log(obj.name, obj.age); // mary 18二、对象[‘属性’] – 让对象属性更加灵活 var zhang {wife1: {name: xiaomei},wife2: {name: xiaoli},wife3: {name: xiaowang},wife4: {name: xiaoxiao},sayWife: funct…

docker 启动成功但无法访问_docker nginx 运行后无法访问的问题解决

## 1最近在学docker部署&#xff0c;一开始打算将nginx先docker化的。对照官方的docker镜像介绍说明&#xff0c;进行自定义配置将官方的nginx.conf复制出来后&#xff0c;修改添加了一些自定义&#xff0c;主要是屏蔽了default.conf&#xff0c;以及include文件夹 sites-avail…

minio实现文件上传下载和删除功能

前言 之前用到文件上传功能&#xff0c;在这里做个学习记录。使用minio实现&#xff0c;后面会记录使用fastdfs和阿里云的oss实现文件上传以及他们的比较&#xff08;oss根据流量收费&#xff09;。minio的中文文档&#xff1a;https://docs.min.io/cn/ minio安装 首先查询d…

ES6 let 和 const 关键字

一、ES5 的 var 关键字 var 存在变量提升var 允许重复声明&#xff0c;浏览器本身只识别一次&#xff0c;但不会报错var 声明的变量即是全局变量&#xff0c;也相当于给 GO(window) 设置了一个属性而且两者建立映射机制基于 typeof 检测一个没有被声明过的变量&#xff0c;并不…

Spring Boot配置MinIO(实现文件上传、下载、删除)

1 MinIO MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口&#xff0c;非常适合于存储大容量非结构化的数据&#xff0c;例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等&#xff0c;而一个对象文件可以是任意大小&#xff…

js 里面令人头疼的 this

JS中this相关问题梳理 this 就是 js 里的关键字&#xff0c;有特殊意义&#xff0c;代表函数执行主体 一、定义 函数执行主体&#xff08;不是作用域&#xff09;&#xff1a;意思是谁把函数执行了&#xff0c;那么执行主体就是谁 二、使用情况 全局作用域里的this 是window…