力扣 30 天 JavaScript 挑战 第二题笔记

这道题是

在这里插入图片描述

涉及知识–闭包

1. 闭包定义以及相关知识点

官方定义为:在 JavaScript 中,函数具有对在相同作用域以及任何外部作用域中声明的所有变量的引用。这些作用域被称为函数的 词法环境。函数与其环境的组合被称为 闭包。
简单理解:内层函数+引用的外层函数变量。下图的a变量以及f函数就构成了闭包。
在这里插入图片描述

但是这样外部(这个外部是相对于outer而不是f)不可以使用闭包里面的变量,此时需要return。

function outer(){let a = 1function f(){return a;}f()
}
const result = outer()

这样通过返回闭包里的函数,外部可以访问到a的值,实现了变量的私有化(在outer函数的外部不可以修改a的值,只能访问a的值)。
但是这样同样造成了内存泄露,因为一般来说函数执行完毕后,会立刻被回收,但是现在讲f赋值给了一个全局变量,不会被回收,造成了内存泄露。

2. 闭包vs类

上述函数类的写法为

class outer {constructor() {this.a = 1;}add() {return this.a;}
}
const result = new outer()
  • 闭包和类的共同点
    都允许你定义或者传入一个私有数据,并且提供一个函数使用私有数据。
  • 闭包的优势 封装
    类里面可以通过 result.a=3来修改私有变量,但是闭包不可以。
  • 类的优势 节省内存
    类的方法存在“公共仓库”(原型对象)里,所有实例来借用。闭包每次造一个新实例,就重新拷贝一份方法。

答案

理解了闭包就很简单了

/*** @param {number} n* @return {Function} counter*/
var createCounter = function (n) {return function () {return n++};
};/** * const counter = createCounter(10)* counter() // 10* counter() // 11* counter() // 12*/

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

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

相关文章

OpenAI GPT-5 深度解析:API Key定价与ChatGPT(Free, Plus, Pro)用户的区别

前言:两年等待,只为这一跃 在科技圈长达两年的屏息期待与无尽猜想之后,2025年8月8日北京时间凌晨,OpenAI终于揭开了其新一代旗舰模型——GPT-5的神秘面纱。这不仅仅是一次常规的产品迭代,更被整个行业视为一块试金石&a…

ClickHouse集群部署实践---3分片2副本集群

ClickHouse集群部署实践—3分片2副本集群 未完待续。。。 喜欢的先点赞收藏!! 由于我们准备部署的是3分片2副本的集群,现在来解释一下配置参数的意思: shard标签代表分片的意思,如上图我们有3个分片,clickh…

Unity_VR_Pico开发手册

文章目录一、配置开发环境1.下载PICO Unity Integration SDK2.安装 Unity 编辑器(添加安卓开发平台模块)3.导入下载的SDK4.项目配置和切换开发平台5.导入 XR Interaction Toolkit6.安装 Universal RP(通用渲染管线)并设置 (选做)二、调试环境搭建&#x…

Linux系统之Docker命令与镜像、容器管理

目录 一、 Docker命令 docker命令帮助 docker常用子命令(必须背会) docker管理子命令(暂时不需要) swarm集群管理子命令(不需要) docker容器管理子命令(必须背会) docker全局选项 二、 docker镜像管…

比亚迪第五代DM技术:AI能耗管理的深度解析与实测验证

比亚迪第五代DM技术:AI能耗管理的深度解析与实测验证 (面向新能源汽车研发/测试工程师)目录 技术背景与核心突破AI能耗管理系统架构解析关键技术创新点 2.1 动力域三脑合一控制2.2 全温域热管理协同2.3 导航数据深度耦合 实测数据与场景验证 …

sqli-labs通关笔记-第37关POST宽字符注入(单引号闭合 手工注入+脚本注入 3种方法)

目录 一、宽字符注入 二、sqlmap之unmagicquotes 三、addslashes与mysqli_real_escape_string 四、源码分析 1、代码审计 2、SQL注入安全性分析 五、渗透实战 1、进入靶场 2、正确用户名密码探测 3、手工注入(方法1) (1&#xff…

Kubernetes 集群密钥与机密管理方案对比分析:Vault、Sealed Secrets 与 AWS KMS

Kubernetes 集群密钥与机密管理方案对比分析:Vault、Sealed Secrets 与 AWS KMS 在容器化与编排环境中,机密(Secrets)管理是确保应用安全性的重要环节。对于 Kubernetes 集群而言,内置的 Secret 对象存在明文存储的风…

Java基础-TCP通信单服务器接受多客户端

目录 案例要求: 实现思路: 代码: User类:用户端 Client类:服务端 ServerReader类:多线程通信类 总结: 案例要求: TCP通信下,正常的写法只能单个服务器和单个客户端进行通信&a…

electron:vue3+vite打包案例

1、安装electron 首先设置镜像源,否则安装会非常非常慢。 打开npm的配置文件。 npm config edit 修改配置项。 registryhttps://registry.npmmirror.com electron_mirrorhttps://cdn.npmmirror.com/binaries/electron/ electron_builder_binaries_mirrorhttp…

traceroute命令调试网络

文章目录 @[toc] 一、核心原理与参数解析 1. 工作原理 2. 关键参数 二、六大运维场景实战 场景1:内网服务器无法访问公网 场景2:跨国访问延迟高(电商业务卡顿) 场景3:VPN分流异常(流量泄露) 场景4:检测DNS劫持 场景5:防火墙规则验证 场景6:云服务跨区延迟优化 三、高…

自己本地搭建的服务器怎么接公网?公网IP直连服务器方法,和只有内网IP直接映射到互联网

​ 你是不是也遇到过这样的问题:在家里或者公司搭建了一个服务器,但是不知道怎么通过公网IP直接访问它?别急,其实很简单!今天就给大家分享几种方法,手把手教你如何实现公网IP直连服务器,和无公网…

MATLAB中文乱码的解决方法

文章目录问题描述解决方法问题描述 对于matlab脚本输出乱码: ‘ʮ����Ф����һ�����й�&#xff…

工业场景反光衣识别准确率↑32%:陌讯多模态融合算法实战解析

原创声明本文为原创技术解析,核心数据与算法逻辑引用自《陌讯技术白皮书》,禁止任何形式的未经授权转载。一、行业痛点:反光衣识别的场景难题在建筑施工、道路养护、仓储物流等工业场景中,作业人员反光衣穿戴规范检测是安全生产的…

北京JAVA基础面试30天打卡05

一、Redis 的持久化机制有哪些?** Redis 提供两种主要的持久化机制: ✅ RDB(Redis DataBase)快照持久化 定期将 Redis 中的数据以“快照”的形式写入磁盘(生成 .rdb 文件)。启动 Redis 时会加载 .rdb 文件恢…

深入理解 Maven POM 文件:核心配置详解

前言 在 Java 开发领域,Apache Maven 是一个强大的项目管理和构建自动化工具。而pom.xml文件,作为 Maven 项目的“心脏”,定义了项目的方方面面。本文将带你深入了解pom.xml中最常用和最重要的配置项,帮助你快速掌握 Maven 的核心…

嵌入式学习的第四十天-51单片机

一、基本框架第一阶段:1980年、Intel英特尔MCS-51系列:8051型号单片机、工业控制领域、由MCU市场->CPU市场。1、CPU(Central Processing Unit,中央处理单元)‌是计算机的核心部件,负责执行计算机指令和处…

Linux(17)——Linux进程信号(上)

目录 一、信号速识 ✍️生活中的信号 ✍️技术上的信号 ✍️信号的发送和记录 ✍️信号处理概述 二、产生信号 ✍️通过终端产生信号 ✍️通过函数发送信号 ✍️通过软件产生信号 ✍️通过硬件产生信号 一、信号速识 ✍️生活中的信号 你在网上买了很多件商品&…

使用pytest对接口进行自动化测试

上篇博客中讲述了什么是接口测试,已经自动化接口测试流程,这篇博客总结如何实现接口自动化测试(一)requestsrequests库是Python对HTTP通信的一个工具,将http协议操作封装成简单的接口,能够让我们高效的编写…

信息安全及防火墙总结

1.1 信息安全现状及挑战信息安全概述 信息安全:防止任何对数据进行未授权访问的措施,或者防止造成信息有意无意泄漏、破坏、 丢失等问题的发生,让数据处于远离危险、免于威胁的状态或特性。 网络安全:计算机网络环境下的信息安全。…

20250808组题总结

A - A Pak Chanek 有一个包含 nnn 个正整数的数组aaa。由于他正在学习如何计算两个数字的向下取整平均值,他希望在他的数组 aaa 上进行练习。当数组 aaa 至少有两个元素时,Pak Chanek 将执行以下三步操作: ∙\bullet∙选择两个不同的索引 ii…