首先作用域链是一种查找机制,在当前作用域下用到某个变量或方法,先看当前作用域下有没有,没有往上一级作用域进行查找,上一级作用域没有再往上一层作用域进行查找依次类推,直到找到全局作用域为止;找不到就就报错了
代码如下:
var a = 100; var b = 200; var c = 300; function test1(num1) { var a = 10; var b = 20; a++; b++; c++; num1++; console.log(a, b, c, num1); function test2() { var c = 30; a++; b++; c++ console.log(a, b, c); } test2(); } test1(5); console.log(a, b, c);
代码预解析流程图: