给定以下代码,我应该在警报框中看到什么?
var a = 100;
function afunc(infunc){
a = 10;
infunc.call();
}
afunc(function(){alert(a)});
我的初步想法是,因为变量a=100在作为参数传递给afunc的匿名函数中有作用域,所以我的浏览器应该会提示100。但这种假设前提是匿名函数实际上是在全局上下文中定义的。显然事实并非如此,因为浏览器会提示10。那么为什么a=10在作用域链中优先于a=100呢?
谢谢!