zoukankan      html  css  js  c++  java
  • 动态作用域和词法作用域

    定义

    词法作用域: 是关于引擎如何寻找变量以及会在何处找到变量的规则。定义过程发生在代码的书写阶段。大多数编程语言在使用。

    动态作用域:作用域是在运行时才被动态确定的形式,而不是写代码时进行静态确定的形式。仍有一些编程语言在使用(比如Bash 脚本、Perl 中的一些模式等)

    代码如下:

    // 词法作用域
    function foo() {
      console.log(a); // 2
    }
    
    function bar() {
      var a = 3;
      foo();
    }
    
    var a = 2;
    bar();
    
    // 动态作用域
    function foo() {
      console.log(a);  // 输出3而不是2
    }
    
    function bar() {
      var a = 3;
      foo();
    }
    
    var a = 2;
    bar();
    

    解析

    词法作用域让foo()中的a通过RHS引用了全局作用域中的a,因此会输出2。
    动态作用域只关心函数在何处调用(类似this),是在运行时才能确定的。是基于栈的,而不是代码中的作用域嵌套。

  • 相关阅读:
    日期类和包装类
    集合——list
    数组
    多态小结
    一些概念性的知识点
    简单的图书管理系统
    一个小总结
    python-web自动化:上传操作
    python-web自动化:日期框操作
    python-web自动化:滚动条
  • 原文地址:https://www.cnblogs.com/wljqds/p/11309013.html
Copyright © 2011-2022 走看看