作用域是什么?
作用域
作用域是根据名称查找变量的一套规则,作用域是在运行时代码中的某些特定部分中变量,函数的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。
作用域链
作用域链指的是作用域与作用域之间形成的链条。当我们查找一个当前作用域没有定义的变量(自由变量)的时候,就会向上一层作用域寻找,直到找到该变量,或抵达到全局作用域为止。
词法作用域和动态作用域
作用域共有两种主要的工作模式。第一种是最为普遍的,被大多数编程语言所采用的词法作用域,另一种叫做动态作用域,如 Bash 脚本。
词法作用域
词法作用域是一套引擎如何寻找变量以及会在何处找到变量的规则。词法作用域最重要的特征是它的定义过程发生在代码的书写阶段(假设你没有使用 eval 或 with),即你写好后你的作用域就定了
JavaScript 并不具有动态作用域。它只有词法作用域,简单明了,但是 this 机制某种程度上很像动态作用域
主要区别:词法作用域是在写代码或者说声明时确定的,而动态作用域是在运行时确定的(this 也是!)
词法作用域关注函数在何处声明,而动态作用域关注函数从何处调用
标签:变量,作用域,代码,词法,何处,动态 From: https://www.cnblogs.com/zhanxinbing/p/18064650