JS--作用域

执行环境简述

  执行环境定义了变量和函数访问其他变量的权限;

  执行环境包含全局执行环境和函数执行环境;

  每个执行环境都有一个相关的变量对象,用来存储的当前执行环境中的变量和函数。

执行环境流程

  执行流开始执行全局代码时,会产生一个全局执行环境;

  当在全局执行环境中调用函数时,会产生一个函数执行环境,

  函数执行环境会被压入执行环境栈中,当函数执行环境中的代码执行结束,函数执行环境会被执行环境栈弹出然后被销毁,

  最后将权限交给之前的执行环境即全局执行环境,全局执行环境只有在应用程序退出时才会被销毁。

什么是作用域

  作用域是JS设计用来存储变量的一套规则,以便于查找变量。

作用域简述

  JS只有全局作用域和函数作用域,没有块级作用域;

   作用域是在函数定义时确定的,而非函数运行时;

  

作用域链

   作用域具有上下级关系,上下级关系具体由函数在哪个作用域下创建的而定。

  当函数fn1在全局作用域下创建时,全局作用域是函数作用域fn1的上级,当在

  函数作用域fn1下创建函数fn2时,函数作用域fn1是函数作用域fn2的上级,

  以此类推构成了一条作用域的链条,俗称作用域链。

参考资料:

  《javascript高级程序设计》

原文地址:https://www.cnblogs.com/marton/p/10211537.html