当前位置: 移动技术网 > IT编程>网页制作>CSS > javascript--作用域解析

javascript--作用域解析

2019年01月09日  | 移动技术网IT编程  | 我要评论

javascript -- 作用域

作用域:

[[scope]]

每一个javascript函数都是一个对象,有些对象我们是可以访问的,但是有一些, 我们访问不了,访问不了的那部分一般是给javascript引擎存取的。[[scope]]指的就是我们所说的作用域,其中存储了运行期上下文的集合。

作用域链

[[scope]]中存储的执行器上下文对象的集合,这种集合呈链式连接,称之为作用域链,

执行期上下文(go ao)

当函数在执行前会进行预编译,预编译也就是就可以成为执行期上下文,每一个执行期上下文都是独一无二的,多次调用一盒函数会导致创建多个执行期上下文,当函数执行完毕,执行期上下文就会被销毁,也就是说,执行期上下文是临时文件.,函数执行完了,他就没了.

注意点

ao在作用域链的顶端

查找变量

查找变量的时候,会从作用域链的顶端依次向下查找,如果在函数体里面开始找的话,会先在当前的函数体里开始寻找,也就是 ao ,然后再查找 go .

通俗说法

函数作用域就是等于 一个小镇子里面,有好多好多的小房子,每一个小房子都是独立的。

作用域链等于是 你爷爷的儿子是你爸爸你爸爸的儿子是你,你可以去问你爸爸要钱,你可以去问你爷爷要钱,但是你爸爸不能问你要钱,你爷爷更加不可能问你要钱,在函数中,被包含在最里面的那个函数权限是最大的,越往外面,权限越小,越往里面,权限越大。

function a(){
    function b(){
        function c (){

        }
        c();
    }
    b();
}
a();

作用域链解释:
a defined a.[[scope]] –> 0 : go
a doing a.[[scope]] –> 0: a ao
–> 1 : go

b defined a.[[scope]] –> 0 : a ao
–> 1 : go
b doing a.[[scope]] –> 0: b ao
–> 1 : a ao
–> 2 : go

c defined a.[[scope]] –> 0 : b ao
–> 1 : a ao
–> 2 : go
c doing a.[[scope]] –> 0: c ao
–> 1 : b ao
–> 1 : a ao
–> 2 : go

总结:里面的能够访问并且改变外面的,外面的不能访问,执行里面的。里面的权利最大,外面的权利最小。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网