【发布时间】:2017-07-20 19:26:40
【问题描述】:
我正在研究范围概念,我发现可以同时实现词法范围和动态范围。任何人都可以帮助我了解根据 JavaScript 的词法范围和动态范围之间的主要区别是什么?
另外我们如何在 JavaScript 中实现它?
【问题讨论】:
-
JS 有词法作用域。
标签: javascript scope
我正在研究范围概念,我发现可以同时实现词法范围和动态范围。任何人都可以帮助我了解根据 JavaScript 的词法范围和动态范围之间的主要区别是什么?
另外我们如何在 JavaScript 中实现它?
【问题讨论】:
标签: javascript scope
在词法作用域中,只能从定义它的代码块中调用变量。该变量的范围是在编译程序时定义的。该变量可以通过其子项的执行上下文访问。但它不能反向作用于它的父代,这意味着它的父代不能访问变量 likes。
在动态范围内,声明的变量可以从代码块外部调用。在这种情况下,编译器将首先在本地函数中搜索变量引用,然后在调用本地函数的函数中搜索,然后在调用该函数的函数中搜索,依此类推,直到调用堆栈。 “动态”指的是变化,因为每次调用给定函数时调用堆栈都可能不同,因此函数可能会根据调用位置而命中不同的变量。
【讨论】: