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

  • 相关阅读:
    DOM对象的一些常用方法
    body-parser的使用
    CSS中box-sizing: border-box
    ES6 数组方法 --- map() filter() find()的用法
    JavaScript --- 预编译
    Vue过滤器filter
    Lock wait timeout exceeded; try restarting transaction
    lead函数
    Mysql 数据词典
    OOD
  • 原文地址:https://www.cnblogs.com/rencoo/p/10221763.html
Copyright © 2011-2022 走看看