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

    js是遵循静态作用域的

    词法作用域其实是指作用域在词法解析阶段既确定了,不会改变

    基本类型
    var foo = 1;

    function sta() {
        console.log(foo);
    }

    (function () {
        var foo = 2;
        sta();
    })();

    // 打印出1 而不是 2

    // 因为sta的scope在创建时,记录的foo是1。如果js是动态作用域,那么他应该弹出2

    var foo = 1;

    function sta() {
        console.log(foo);
    }

    (function () {
        foo = 2;
        sta();
    })();

    // 打印出2, 记录得foo依旧是全局变量, 只不过在其运行时, 已经变为2了

    var foo = 1;

    function sta() {
        console.log(foo);
    }

    (function () {
        sta();
        foo = 2;
    })();

    // 打印出1, foo改变发生在函数运行之后

    引用类型
    var obj = {foo1};
    function sta() {
        console.log(obj.foo);
    }

    (function () {
        var obj = {foo2};
        sta();
    })();

    // 打印出1

    var obj = {foo1};
    function sta() {
        console.log(obj.foo);
    }

    (function () {
        obj.foo = 2;
        sta();
    })();

    // 打印出2

  • 相关阅读:
    Python day 34 并发编程、PID/PPID、实现多进程得两种方式
    Python Day33:粘包问题及粘包解决方案
    数据分析
    数据分析
    爬虫 之 mongodb数据库
    爬虫
    爬虫
    爬虫
    flask框架
    flask框架
  • 原文地址:https://www.cnblogs.com/rencoo/p/10221763.html
Copyright © 2011-2022 走看看