鉴于以下代码,我应该在警报中看到什么?
var a = 100;
function afunc(infunc){
a = 10;
infunc.call();
}
afunc(function(){alert(a)});
Run Code Online (Sandbox Code Playgroud)
我最初的想法是我的浏览器应该提醒100,因为变量a = 100将作为作为afunc参数传递的匿名函数的范围.但是这假设匿名函数实际上是在全局上下文中定义的.显然情况并非如此,因为浏览器提醒10.那么为什么在范围链中a = 10之前a = 10?
谢谢!
那么为什么在范围链中a = 10超前= 100?
不是.您只定义了1个a变量,只是在被警告之前被更改100为10.
如果您希望as是具有自己值的不同变量,则它们都需要一个var关键字:
var a = 100
function afunc(infunc){
var a = 10;
infunc.call();
}
afunc(function(){alert(a)})?
Run Code Online (Sandbox Code Playgroud)