学透 词法(静态)作用域和动态作用域

92 阅读1分钟

1、词法(静态)

  • 取决于将变量写在哪个作用域
  • Js 使用的是这种作用域
  • 当前作用域内 没有找到变量定义 会继续向上寻找
var value = 3;

function foo() {
 console.log(value);  //  问这个地方的打印结果
}

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

bar();   

  • 写一下分析思路
  • 1、定义了一个全局变量 value
  • 2、定义了两个函数 foo和bar
  • 3、执行bar 后 foo会执行
  • 4、查找自身作用域 未找到变量 向上层 作用域继续查找
  • 5、打印出 3

2、动态作用域

  • bash脚本
  • 可以尝试将上面的代码 放在 bash环境中执行 打印 6
  • bash环境 可以下载 git bash 启动

3、大功告成