概述
作用域与作用域链
理解:
1、作用域:一块代码区域,在编码时就确定了,不在变化。
2、作用域链:多个嵌套的作用域形成的由内向外的结构,用于查找变量。
分类:
1、全局
2、函数
3、js没有块作用域(在ES6之前)
作用:
作用域:分离变量,可以在不同的作用域声明同名的变量,而这同名的变量不冲突。
作用域链:用于查找变量。
闭包
理解:
1、当嵌套的内部函数引用了外部函数的变量时就产生了闭包。
2、 通过chrome工具得知: 闭包本质是内部函数中的一个对象, 这个对象中包含引用的变量属性。
作用:
1、延长局部变量的生命周期。
2、让函数外部能操作内部的局部变量。
3、闭包程序如下
```javascript
function fn1() {
var a = 2;
function fn2() {
a++;
console.log(a);
}
return fn2;
}
var f = fn1();
f();
f();
闭包的缺点:
1、变量占用内存事件可能过长。
2、可能导致内存泄漏。
如何解决:
及时释放:f=null;让内部函数对象成为垃圾对象。
内存溢出与内存泄漏:
1、内存溢出
一种程序运行出现的错误
当程序运行需要的内存超过了剩余的内存时, 就出抛出内存溢出的错误
2、内存泄漏
占用的内存没有及时释放
内存泄露积累多了就容易导致内存溢出
常见的内存泄露:
意外的全局变量
没有及时清理的计时器或回调函数
闭包
最后
以上就是开朗水杯为你收集整理的JS作用域与作用域链及闭包作用域与作用域链闭包的全部内容,希望文章能够帮你解决JS作用域与作用域链及闭包作用域与作用域链闭包所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复