• js词法作用域规则


    function foo() {
    console.log( a ); // 2不是3
    }


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

    var a = 2;
    bar();

    js中的作用域就是词法作用域 

    词法作用域是一套关于引擎如何寻找变量以及会在何处找到变量的规
    则。 词法作用域最重要的特征是它的定义过程发生在代码的书写阶段( 假设你没有使用
    eval() 或 with)

    而动态作用域并不关心函数和作用域是如何声明以及在何处声明的, 只关心它们从何处调
    用。 换句话说, 作用域链是基于调用栈的, 而不是代码中的作用域嵌套.

    所以js的作用域是词法作用域即从函数书写时的位置寻找.

    =====================================================================

    主要区别: 词法作用域是在写代码或者说定义时确定的, 而动态作用域是在运行时确定
    的。( this 也是! ) 词法作用域关注函数在何处声明, 而动态作用域关注函数从何处调用

  • 相关阅读:
    判断一个数是否为素数的方法
    什么是算法?
    table 表格
    状态模式
    设计模式
    观察者模式
    async函数
    JS单线程和异步
    ES6 --- Promise
    浅析flex 布局
  • 原文地址:https://www.cnblogs.com/a-flydog/p/5527168.html
Copyright © 2020-2023  润新知