JavaScript 做用域、做用域链

[[scope]]:每一个JavaScript函数都是一个对象,对象中有些属性咱们能够访问,但有些不能够,这些属性仅供JavaScript引擎存取,[[scope]]就是其中一个.函数

[[scope]]就是咱们说的做用域,其中存储了执行期上下文的集合.spa

 

做用域链:[[scope]]中存储的执行期上下文的集合,这个集合呈链式连接,咱们称之为做用域链.code

1 <script>
2        function a(){
3            
4        }
5 
6 //a.[[scope]]
7 
8 </script>

执行期上下文: 函数执行时建立的一个内部对象,定义了函数执行时的环境(GO/AO),函数每次执行,执行期上下文都是独一无二的,函数执行完就会被销毁.对象

 

查找变量是从做用域链的顶端以此查找.blog

 

函数被定义时,做用域链包括上级函数的AO和全局GOip

 

 

 1 <script>
 2 
 3 function a(){
 4      function b(){
 5            var b = 234;
 6      }
 7      var a = 123;
 8      b();
 9 }
10 
11 var glob = 100;
12 a();
13 
14 </script>

 

a执行建立了b,  b函数被建立时的AO就是引用了函数a执行时的AO , b是站在a的肩膀上看世界 , 建立时获取了a的劳动成果(做用域链).作用域

 

举个例子:io

<script>
function a(){
     function  b(){
           function c(){
      
           }
     }
}
a();

</script>

执行时做用域链:function

这里全部的aAO都是同一个,全部bAO都是同一个class

相关文章
相关标签/搜索