【笔记07】Javascript - 基本概念 - (作用域)
function test(){
}
通常,我们把函数生成的空间叫做“作用域”,但这么说不精准。
作用域属于函数,函数产生了作用域。
一切为对象的东西,都可以有属性。函数也是一类对象,所以函数也有属性。
console.log(test.name); // test
有一些属性,是我们可以直接使用的,如:
test.name
test.prototype
还有一些我们访问不了的属性(隐式属性),但他又存在。
// test.[[scope]]
test.[[scope]] 里面存的是一个作用域。
来看一下[[scope]]的官方解答:
[[scope]]:每个Javascript 函数都是一个对象,对象中有些属性我们可以访问,但有些不可以,这些属性仅供 javascript 引擎存取,[[scope]] 就是其中一个。
[[scope]] 指的就是我们所说有作用域,其中存储了运行期上下文的集合。
作用域链:[[scope]] 中所存储的执行期上下文对象的集合,这个集合呈链式链接,我们把这种链式链接叫做作用域链。