每个JavaScript函数都是一个对象
对象有属性有方法 一切有对象的东西都有属性 面向对象就是基于此了解面向对象
作用域
在函数方法上有一个隐性属性【【scope】】(作用域) 其中存储了运行期上下文的集合也就是预编译时所产生的 称为执行期上下文的内部对象AO
执行期上下文
在函数执行的前一刻会进行预编译 生成AO对象 什么是预编译 函数每次执行时所生成的执行期上下文是独一无二的 也就是函数每执行一次生成一个新的执行期上下文 所以多次调用一个函数会创建多个执行期上下文 , 在函数执行完毕后它所产生的执行期上下文会被销毁。
作用域链
作用域链 就是作用域里的集合呈链式连接
在函数被定义的时候它会拿到它父级的执行期上下文放在索引的前位 在函数执行时他自己生成的执行期上下文会排在索引的第一位 形成一个链式 函数的执行拿值就是在执行期上下文里从索引的0位到n位依次拿值