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

    静态作用域指的是一段代码,在它执行之前就已经确定了它的作用域,简单来说就是在执行之前就确定了它可以应用哪些地方的作用域(变量)。
    动态作用域–函数的作用域是在函数调用的时候才决定的

    JavaScript采用的是词法作用域即静态作用域;

    // 静态作用域:
    var a = 10;

    function fn() {
    var b = 1;
    console.log(a + b);
    }

    fn(); // 11

    在创建fn函数时的时候就已经确定了它可以作用哪些变量,如果函数fn里面有变量a就直接操作变量a,
    如果没有就往上一级查找,这就是静态作用域

    // 动态作用域:
    function foo() {
    console.log(a);
    }

    function bar() {
    var a = 3;
    foo();
    }

    var a = 2;
    bar(); // 2;

    bar 调用,bar里面foo被调用,foo函数需要查找变量a,由于JavaScript是词法作用域(即静态作用域),foo被解析时在全局作用域.
    所以只能在全局作用域中找a,输出结果为2,而非bar作用域中的a。如果js采用的时动态作用域,那么foo在bar中调用,就会先在bar中查询a,输出为3。

  • 相关阅读:
    问题汇总
    Spring boot开发过程遇到的一些小问题
    Java 7 新特性
    I2C总线协议详解
    画布分割算法
    nordic __noinit__变量使用
    RTOS事件组使用流程
    RTOS软件定时器的使用
    RTOS互斥信号量的使用流程
    RTOS优先级翻转
  • 原文地址:https://www.cnblogs.com/xiaoniaohhl/p/11117715.html
Copyright © 2011-2022 走看看