zoukankan      html  css  js  c++  java
  • 区分词法作用域(js)与动态作用域(精!)

    在js学习中,词法作用域是必须要掌握的!

    在这里,我将总结一下《你不知道的JS》一书中词法作用域的重点并分享给大家!

    首先带来一段代码示例:

    function foo(){
                console.log(a);//2
            }
            function bar(){
                var a = 3;
                foo();
            }
            var a = 2;
            bar();

    js词法作用域输出结果:"2"; 动态作用域输出结果:"3"

    下面我将对两种作用域的输出结果进行分析:

    #在对结果分析之前首先我们要了解的是:词法作用域关注函数在何处声明,而动态作用域关注函数从何处调用

    ##词法作用域代码解析:bar() 会调用 foo(),foo() 再查询所需变量,因为函数是在foo处声明的,所以会从foo所在作用域进行查找,所得结果为"2";

    ##动态作用域代码解析:由于函数是从 bar()开始调用的,因此会从 bar()所在作用域查找变量,因此按照动态作用域的运行结果得到的结果是"3".

    #最后要强调的一点:在JS中并不具有动态作用域!!!

  • 相关阅读:
    黄宗禹9.11作业
    黄宗禹第一次作业
    9.11
    9.18
    计算平均速度
    圆的周长与面积
    JAVA 作业
    9.11
    9.25
    计算平均速度题
  • 原文地址:https://www.cnblogs.com/wccc/p/6708269.html
Copyright © 2011-2022 走看看