闭包
-
闭包概念
本质上:闭包是内部函数与外部函数联系的桥梁
闭包是指有权访问另一个 函数作用域中的变量的函数。
-
闭包的用途
作用: 可以读取函数内部的变量, 让这些变量的值始终保持在内存中。
1,匿名自执行函数
<script type="text/javascript">
(function (a) {
console.log(a)
})(3) // 3
</script>
为什么要使用匿名函数自执行函数,好处是什么
定义变量是需要加上var 否则会默认添加到全局对象的属性上,或者别的函数可能误用这些变量;或者造成全局对象过于庞大,影响 访问速度(因为变量的取值是需要从原型链上遍历的), 实际中有的函数只调用一次使用自执行函数也是很好的
我们创建了一个匿名的函数,并立即执行它,由于外部无法引用它内部的变量,
因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象。
2,函数作为返回值
有缓存
3 实现封装
-
闭包的缺陷:
闭包会导致内存占用过高,因为变量都没有释放内存 -
变量函数声明提升
常见内存泄漏
-
垃圾回收
let const 区别
“暂时性死区”也意味着typeof不再是一个百分之百安全的操作。