美文网首页
JavaScript之静态作用域

JavaScript之静态作用域

作者: 伊凡的一天 | 来源:发表于2018-05-14 16:18 被阅读5次

作用域是指代码中定义变量的区域。作用域规定了如何查找变量,也就是确定当前代码对变量的访问权限

静态作用域和动态作用域

静态作用域是指函数的作用域在函数定义时就已经确定了,而动态作用域是指函数的作用域在运行时才确定。下面是一段代码:

var value = 1;

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

function bar() {
    var value = 2;
    foo();
}

bar();

如果这段代码使用静态作用域的方式访问变量,那么执行foo()函数时,首先查看函数内是否存在局部变量value的定义,如果没有,则查找之前的代码,也就是var value = 1;,查找到了value的定义为1,因此输出1。

如果这段代码使用动态作用域的方式访问变量,那么执行foo()函数时,首先依旧从函数内部查找是否存在局部变量value的定义,如果没有,那么从调用方bar()函数的作用域中查找,找到了var value = 2;,因此输出2。

JavaScript采用静态作用域的方式访问变量,因此这个例子输出为1。

常见的采用动态作用域的语言是bash。

相关文章

  • 执行上下文、作用域链、this、闭包

    javascript 执行的是词法作用域,即静态作用域。与之相对的是动态作用域。 静态作用域:函数的作用域在函数定...

  • JavaScript 之 静态作用域与动态作用域

    静态作用域 JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。 函数的作用...

  • 作用域

    静态作用域 (词法作用域) 和 动态作用域 下面的例子可以帮助理解 假设 JavaScript 采用 静态作用域,...

  • 2019-06-26

    JavaScript静态作用域和动态作用域实例详解 静态作用域:一段代码,在它执行之前就已经确定了它的作用域,简单...

  • 静态作用域与动态作用域

    1.作用域 当前执行代码对变量的访问权限,JavaScript采用的是词法作用域,也就是静态作用域; 2.静态作用...

  • 2021-03-02

    js 1. 静态作用域因为 JavaScript 采用的是词法静态作用域,函数的作用域在函数定义的时候就决定了。 ...

  • 「JS」变量作用域

    作用域介绍静态作用域动态作用域 JavaScript 变量作用域词法环境组成创建结构关于词法环境的问题with 语...

  • JavaScript之静态作用域

    作用域是指代码中定义变量的区域。作用域规定了如何查找变量,也就是确定当前代码对变量的访问权限。 静态作用域和动态作...

  • 从 JavaScript 作用域说开去

    目录 1.静态作用域与动态作用域 2.变量的作用域 3.JavaScript 中变量的作用域 4.JavaScri...

  • 【前端】-023-JavaScript-进阶篇-变量作用域

    变量作用域 JavaScript中变量的作用域 采用静态作用域(变量定义的位置决定了变量的引用) 没有块级作用域,...

网友评论

      本文标题:JavaScript之静态作用域

      本文链接:https://www.haomeiwen.com/subject/exljdftx.html