闭包,变量和函数提升,函数参数,展开运算符,箭头函数

devtools/2025/1/23 6:59:13/

闭包:

内层函数加上外层变量,下边的闭包也就是  fn函数加上 fn函数中运用到的外层变量 a

scope:作用域

现在可以看到如果内层函数没有使用到外部变量,那么就不会产生闭包

闭包作用:封闭数据,提供操作
闭包常见作用:外部函数使用内部变量的值

outer函数嵌套 fn 函数 ,想要使用 fn 函数里边的 a 的 值 10 ,在 outer 中将 fn输出,那么调用 outer时 也就是输出 fn , 用变量 fun 接收 outer函数,然后调用 fun 那么久可以实现在外部使用 内部函数变量。

也就是先将函数输出,那么在外部调用就能使用到内部变量

 

闭包作用:实现数据私有

例如,做个统计函数调用次数,函数调用一次,就 ++

如果是直接声明全局变量,那么可能会被修改,所以使用闭包形式,防止 变量 次数被修改

现在 fun 能一直 访问 i ,且 fun 作为全局作用域里的,所以全局作用域里的不会被销毁,只有关闭了才会回收。那么也就是函数执行完毕了也不能回收,所以出现了内存泄漏,这就是闭包的问题。

变量提升 :

把所有 var 声明的变量提升到  当前作用域  的最前面

只提升声明,不提升赋值

函数提升:

函数表达式也不能进行函数提升,函数表达式是这样的 var fun = function() { },变量只提升声明,不提升赋值,所以提升的是 var fun ,这没体现 fun 是啥呀,js 是弱编程语言,只有赋值才能看出是什么数据类型,那么紧接着调用的话 就是 fun() , 显然报错呀,fun 都没能体现是啥

 

函数参数:

  • 动态参数
  • 剩余参数

 

arguments 是个伪数组,在函数内,能直接打印出来。伪数组有索引下标以及自己的方法,但是没有数组增删改查的方法 

 

遍历 arguments 中的实参 ,将其进行相加求和

剩余参数 ,用 展开运算符 ... 和变量名 对传过来的实参进行接收,并且接收过来的是真数组。要想对传过来的参数进行求和的话,后面直接 for 循环求和。

要打印剩余参数的话是不用写 展开运算符 ... 的

如果函数中写了形参,那么在函数调用时,实参和形参一一对应,剩下的实参就用 剩余参数接收

展开运算符:

在函数里边是剩余参数,在函数外边是展开运算符

 

直接打印 ...arr 看似是没有逗号隔开,但是其实是有逗号的,这就是为什么Math对象的 max方法需要的是这样 1,2,3 的形式但是使用 ...arr 依然可以 的原因 

 

箭头函数


http://www.ppmy.cn/devtools/152812.html

相关文章

async++库的使用示例

1、普通异步函数 如前面的博客介绍的,这个库中提供了async::spawn方法,这个方法通常用来启动异步函数,这个框架会利用线程池去完成函数,因此要注意数据安全。正因为将任务放到了单独的线程执行,并且还有调度开销&…

HBased的原理

一、什么是HBase HBase是一个分布式,版本化,面向列的数据库,依赖Hadoop和Zookeeper (1)HBase的优点 提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统 (2) HBase 表的特性 Region包含多行 列族包含多…

PPT技巧:如何使用快速访问工具栏

1、效果展示 2、设置方法 3、最重要的设置

用于牙科的多任务视频增强

Multi-task Video Enhancement for Dental Interventions 2022 miccai Abstract 微型照相机牢牢地固定在牙科手机上,这样牙医就可以持续地监测保守牙科手术的进展情况。但视频辅助牙科干预中的视频增强减轻了低光、噪音、模糊和相机握手等降低视觉舒适度的问题。…

MySQL入门(数据库、数据表、数据、字段的操作以及查询相关sql语法)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

使用HTML5 Canvas 实现呼吸粒子球动画效果的原理

在网页开发领域,动画效果能够极大地提升用户体验,让页面变得更加生动有趣。今天,我们深入剖析一个基于 HTML5 Canvas 的 3D 粒子动画 —— 呼吸粒子球。通过详细解读其代码实现,我们将全面了解如何运用 HTML5 的强大功能构建出如此…

Webpack简述

一、为什么要构建工具 人类喜欢书写的代码以及开发方式计算机不喜欢,构建工具的作用就是让人类舒舒服服写自己喜欢的代码,然后一打包生成计算机喜欢的代码 第一个webpack自身仅仅是将我们引入的模块打包成一个文件(编译import)&am…

Spring Boot AOP实现动态数据脱敏

依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…