| |
|
开发:
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知识库]闭包与数据私有以及问题 |
什么是闭包?MDN官方话: 一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。 也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域。 在 JavaScript 中,每当创建一个函数,闭包就会在函数创建的同时被创建出来。 闭包作用之实现数据私有全局变量,容易被随意修改,希望有些数据是私有的,不让外部随意的访问 例如?
调用一次fn钱+1 ,结果有个小偷直接偷你1000块?
所以我们需要一个保险柜与一把钥匙对不对 原理:闭包让你可以在一个内层函数中访问到其外层函数的作用域 实现代码如下
现在这个小偷除非偷钥匙 不然是不是偷不了钱啦 这样便实现了数据的私有化 注意点:外部函数需要有对内部函数的引用也就是return (内存才不会被释放) 问题:由于内存不被释放,所以会造成内存泄漏,如何解决?js垃圾回收机制:标记清除法 标记清除法基本概念:从全局触发,访问不到(无法触及)的内存空间,就会被自动回收 解决方案: 让return出来的函数赋予null? 示例
原理: 断开了之前对内部函数的引用,对应的缓存的内容便被释放 ?闭包私有场景应用大家看一下如下代码
?看结果? 看到这个代码大家有没有想到什么 不买关子了 New操作符大家还记得不 我们用new操作符改造一下
打印 ?可以说一模一样哈 所以大家可千万不要再说啥闭包是一个函数访问另一个函数内的变量了哈,现在年轻人面试这样的回答真让我尴尬 |
|
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 7:27:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |