词法作用域 vs 动态作用域
- 作用域:定义为一组规则,它主宰着 引擎 如何通过标识符名称在当前的 作用域,或者在包含它的任意 嵌套作用域 中来查询一个变量。
- 词法作用域:是在 词法分析 时被定义的作用域。词法作用域是基于,你,在写程序时,变量和作用域的块儿在何处被编写决定的。是函数被声明的位置唯一定义的。是变量被声明时的位置唯一定义的。总结就是:词法作用域的关键性质是,在代码被编写时定义。
- 骗过词法作用域的一些方法被认为是糟粕。有两种机制,一种是eval(…)、setTimeout(…)、setInterval(…)、new Function(…)这种动态生成代码的形式;另一种是已废除的with语句。
- 动态作用域的机制类似等同于JavaScript中的(
this
)机制,由运行时确定。