【问题标题】:Different scoping in Javascript - Lexical vs DynamicJavascript 中的不同作用域 - 词法与动态
【发布时间】:2017-07-20 19:26:40
【问题描述】:

我正在研究范围概念,我发现可以同时实现词法范围和动态范围。任何人都可以帮助我了解根据 JavaScript 的词法范围和动态范围之间的主要区别是什么?

另外我们如何在 JavaScript 中实现它?

【问题讨论】:

  • JS 有词法作用域。

标签: javascript scope


【解决方案1】:

在词法作用域中,只能从定义它的代码块中调用变量。该变量的范围是在编译程序时定义的。该变量可以通过其子项的执行上下文访问。但它不能反向作用于它的父代,这意味着它的父代不能访问变量 likes。

在动态范围内,声明的变量可以从代码块外部调用。在这种情况下,编译器将首先在本地函数中搜索变量引用,然后在调用本地函数的函数中搜索,然后在调用该函数的函数中搜索,依此类推,直到调用堆栈。 “动态”指的是变化,因为每次调用给定函数时调用堆栈都可能不同,因此函数可能会根据调用位置而命中不同的变量。

http://wiki.c2.com/?DynamicScoping

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-03
    • 2016-09-23
    • 2014-04-19
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    相关资源
    最近更新 更多