执行环境简述
执行环境定义了变量和函数访问其他变量的权限;
执行环境包含全局执行环境和函数执行环境;
每个执行环境都有一个相关的变量对象,用来存储的当前执行环境中的变量和函数。
执行环境流程
执行流开始执行全局代码时,会产生一个全局执行环境;
当在全局执行环境中调用函数时,会产生一个函数执行环境,
函数执行环境会被压入执行环境栈中,当函数执行环境中的代码执行结束,函数执行环境会被执行环境栈弹出然后被销毁,
最后将权限交给之前的执行环境即全局执行环境,全局执行环境只有在应用程序退出时才会被销毁。
什么是作用域
作用域是JS设计用来存储变量的一套规则,以便于查找变量。
作用域简述
JS只有全局作用域和函数作用域,没有块级作用域;
作用域是在函数定义时确定的,而非函数运行时;
作用域链
作用域具有上下级关系,上下级关系具体由函数在哪个作用域下创建的而定。
当函数fn1在全局作用域下创建时,全局作用域是函数作用域fn1的上级,当在
函数作用域fn1下创建函数fn2时,函数作用域fn1是函数作用域fn2的上级,
以此类推构成了一条作用域的链条,俗称作用域链。
参考资料:
《javascript高级程序设计》