| |
|
开发:
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项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |