美文网首页JavaScript
js 静态作用域和动态作用域

js 静态作用域和动态作用域

作者: 古月丶 | 来源:发表于2019-11-07 17:50 被阅读0次

静态作用域:函数声明的时候就已经确定作用域。
动态作用域:函数调用的时候确定作用域。

js采用的是静态作用域,也称词法作用域。

var a = 1;
function func() {
  console.log(a)
}
function func2() {
    var a = 2;
    func();
}
func2();
// 打印 1

func2 被调用,func2 中的 func 被调用,执行 console.log(),在 func 函数中未找到变量 a,于是去查找外层作用域,由于 js 是静态作用域,func 是在全局作用域中定义的,所以会去全局作用域查找变量,于是打印1。

var a = 1;
function func2() {
    var a = 2;
    
    function func() {
      console.log(a)
    }
    func()
}
func2();
// 打印 2

因为 func 是在 func2 中被定义,当在 func 中未找到变量a,于是去外层 func2 中查找,找到变量a = 2,打印2,执行完成。

相关文章

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • JavaScript之词法作用域

    作用域 在JS中作用域是一个相当重要的概念,我们一般把作用域分为两类:即静态作用域和动态作用域,JS采用的就是静态...

  • js 静态作用域和动态作用域

    静态作用域:函数声明的时候就已经确定作用域。动态作用域:函数调用的时候确定作用域。 js采用的是静态作用域,也称词...

  • 作用域

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

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

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

  • 2019-06-26

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

  • 详解javascript中的词法作用域

    所谓作用域,就是一个声明起作用的那一段的程序代码。而作用域又分为词法作用域(也叫静态作用域)和动态作用域。静态作用...

  • 作用域和闭包

    1.理解词法作用域和动态作用域 作用域 静态作用域 作用域是指程序源码中定义变量的区域作用于规定如何查找变量,也就...

  • 「JS」变量作用域

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

  • lexical scoping vs dynamic scopi

    lexical scoping翻译为词法作用域或静态作用域 dynamic scoping翻译为动态作用域 Wit...

网友评论

    本文标题:js 静态作用域和动态作用域

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