作用域与作用域链,以及关于原生链的回顾

作用域

简单来说,如果把代码比作鱼,那作用域就是水。这样来看,作用域就是代码的执行环境。
一般分成两种作用域:
1,全局作用域:全局的执行环境,无非是windows的对象,供内部环境调用。
2,函数作用域:私有作用域,供内部函数代码运行。
这两类作用域本质都是栈内存,所以,作用域也可以说成是,代码执行开辟栈内存。

作用域链

当代码在环境中执行时,会创建变量对象的一个作用域链。内部环境可以通过作用域链访问所有的外部环境,但反之不行

var a=1

function(){
console.log(a) //1  通过作用域链找到了全局变量a
var b=1
}

console.log(b) //undefined  外部无法访问内部

与原型链的异同

这点也是我个人学习中联想到的,原型链是由若干个原型连起来的,变量在使用方法和属性时,会先找到他自己的原型,如果没有,再找上一层,由此形成了链。那么与作用域链有什么异同呢?

1.定义不同

原型链是由变量不断访问原型形成的链;
作用域链是内部环境可以访问外部环境的依托;

2.不可逆性

两者都是不可逆的性质,外部环境不可访问内部环境,a的原型也不可能可逆访问a

发布了12 篇原创文章 · 获赞 0 · 访问量 1116

猜你喜欢

转载自blog.csdn.net/weixin_45931321/article/details/104278060