美文网首页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 静态作用域和动态作用域

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