什么是js链

日期:

最佳答案

简单来说就是一个东西列表。那么这个东西列表是怎样来的呢?每次挪用js函数时,编译器情况都会为这个js函数创建一个新的东西(高低文东西)来保存部分变量,并且把这个新的东西增加到感化域链中。当函数前去时,就从感化域链中将绑定变量的东西移除。

js权威指南中的一段话很好的解释这个不雅点,摘录如下:

在js的顶层代码中(即不包含在任何函数定义内的代码),感化域链由一个全局东西构成。在不包含嵌套的函数体内,感化域链上有两个东西,第一个是定义函数参数跟部分变量的东西(高低文东西),第二个是全局东西。在一个嵌套函数体内,感化域链上至少有三个东西。

东西感化域链创建规矩,当定义一个函数时,它现实上保存一个感化域链。当挪用这个函数时,它创建一个新的东西来存储它的部分变量,并将这个东西增加至保存的那个感化域链上,同时创建一个新的更长的表示函数挪用感化域的"链"。

对嵌套函数,每次挪用外部函数时,外部函数会重新定义一遍。因此每次挪用外部函数时,感化域链都差别。每次挪用外部函数时,固然外部嵌套函数的代码没变,但是关联这段代码的感化域链不雷同了,所以外部函数也有差别,做永久链差别了。