IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 作用域与作用域链、变量提升与函数提升、执行函数定义与执行函数、闭包 -> 正文阅读

[JavaScript知识库]作用域与作用域链、变量提升与函数提升、执行函数定义与执行函数、闭包

作用域与作用域链:

作用域实际是一个变量可以合法使用的区域,作用域能够起到隔离变量,避免变量重名的问题,es5中有全局作用域,函数作用域,es6有块级作用域

私有作用域:函数执行都会形成一个私有作用域

全局作用域:页面一打开就会形成一个全局的作用域

私有变量:在私有作用域里边形成的变量(通过var声明;形参

全局变量:在全局作用域形成的变量(var a = 1 或者函数内没有声明,直接赋值的变量)

作用域链是由多个嵌套的作用域由内向外形成的结构,当查找一个变量时,会沿着整个作用域链向外寻找,找到了就会使用那个变量,在整个作用域链都找不到时会报错。

变量提升与函数提升

变量提升在执行js代码前会有一个域解析的过程,在这个过程中变量用变量声明的部分会提升到作用域顶端(这个结果是可以验证的,只要在变量声明语句前,就可以访问这个变量,只是值为undefined)

函数提升也同样在域解析过程中会被提升到作用域的最前面执行(可以在函数声明前调用这个函数),需要注意的是let和const关键字没有变量提升的

执行函数定义与执行函数

执行函数定义实际上就是创建函数对象,如果这个函数用一个变量来接收,那么这个变量存储的是这个函数在内存中的地址

执行函数就是执行函数内部的语句,俗话调用

必须要先执行函数定义再执行函数

闭包

首先闭包三个特性:

1.函数嵌套函数

2.函数内部可以饮用函数外部的参数和变量

3.参数和变量不会被垃圾回收机制回收

闭包的形成:

?嵌套的内部函数引用了外部函数的变量,但外部函数调用,就形成了闭包,闭包可以延长局部变量的生命周期,重复使用变量,在函数外部可以操作函数内部的局部变量

使用闭包:执行内部函数

释放闭包:让内部函数对象成为垃圾对象,断开指向它的所有引用

闭包应用

我们在做项目时很多模块都用到了闭包,比如说购物车中的删除商品,根据id删除,执行函数中传入的参数,在请求中引用了该参数的id,带有一个公共弹窗,点击确定取消按钮,会触发退订事件,调用退订接口,成功之后还会刷新列表

好处

1.保护函数内的变量安全,实现封装,防止变量流入其他环境发生命名冲突

2.在内存中维持一个变量,可以做缓存

3.匿名自执行函数可以减少内存消耗

坏处

1.其中一点上面已经有体现了,就是被引用的私有变量不能被销毁,增大了内存消耗,造成内存泄露,解决方法是可以在使用完变量后手动为它赋值为null

2.其次由于闭包涉及跨域访问,所以会导致性能损失,我们可以通过把跨作用域变量存储在局部变量中,然后直接访问局部变量,来减轻对执行速度的影响。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-31 23:55:34  更:2022-03-31 23:57:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:48:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码