function foo() {
console.log( a ); // 2
}
function bar() {
var a = 3;
foo();
}
var a = 2;
bar();
这里我明白foo通过词法作用域链找到上一级全局 a=2
问题在下面
function foo(a) {
console.log( a ); // 3(不是2!)
}
function bar() {
var a = 3;
foo(a);
}
var a = 2;
bar();
为什么一旦传参给foo,答案就变3了?难道因为参数的值通过动态作用域查找么?
JS不是没有动态作用域么?是什么原理?
https://leohxj.gitbooks.io/fr...
进入执行上下文时,VO的初始化过程具体如下: