1:作用域链:
-作用域链会被保存到一个隐式属性中[[scope]]中,这个属性我们访问不到,但存在。它是让js引擎访问的,里面存储的就是作用域链AO GO. 也可以说AO和Go的集合
作用域链详解
var global
function a() {
// 进来以后,首先看到的是a自己的ao,然后才是全局go
function b() {
//进来以后,首先看到的是b自己的ao,下部才是a的ao,然后才是全局go
var bb = 123;
aa = 0
}
var aa = 234
b()
}
a() //执行完,a的ao到b的ao到全局的go的关联被斩断
复制代码
闭包底层原理
// 闭包:内部函数被保存到外部
function a() {
var aa = 123
function b() {
var bb = 234
console.log(aa);
}
return b
}
var res = a()
res()
复制代码
当a执行完后,a与作用域链联系断裂,但是b此时没有与作用域链失联,他还是可以执行,可以看到a函数的ao。因为b函数出生的时候,a函数的ao就被b拿到了
以上就是作用域链和闭包的底层原理,这篇文,稍稍用心都应该能看懂。不懂得请在评论里自由讨论。
关于闭包更多请关注下一篇
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END