js作用域的学习

什么是作用域?

英文名:Scope,一个变量的可用范围,专门保存变量的对象。

js中的两级作用域
1.全局作用域:

程序的任何地方都属于全局范围;
保存着所有的全局变量,可以在全局中被使用(没有被局部作用域的变量覆盖)。

2.函数作用域:

仅在函数内的范围成为这个函数的作用域。
保存着函数内声明的变量,局部变量只能在函数内使用;
注意:javascript中没有块级作用域

作用域链

每个函数在创建时,都有一个属于自己的作用域链;
这个作用域链保存了一个函数可用的所有作用域和变量,控制着变量的使用顺序,先函数内后全局–就近原则

闭包

1.函数内嵌套函数;
2.外层函数把内存函数返回到外层函数外部;
3.函数的内部参数和变量不会被垃圾回收机制回收。
形成的原因:外层函数调用后,外层函数的作用域对象被内层函数的作用域链引用着,无法释放,从而产生了闭包。
优点:保护函数内的变量安全 ,实现封装,防止变量流入其他环境发生命名冲突;
缺点:被引用的私有变量不能被销毁,增大了内存消耗,造成内存泄漏,解决方法是可以在使用完变量后手动为它赋值为null;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值