【发布时间】:2021-03-22 19:38:44
【问题描述】:
如果我运行下面的代码,它会按预期运行。 (预计普通代码语言和 JavaScript 在函数中都具有“局部范围”)因此变量不会被子函数更改。
testFunc(0);
var bFunc = function(){
for(H=1; H<5;H++){}
alert("bFunc H:"+H);
};
var testFunc = function(H){
alert("CallId 1, H: " + H);
bFunc();
alert("CallId 2, H: " + H);
};
当运行下面的代码时,它会因为子函数内部的变量被修改而失败:
forFunc();
var cFunc = function(){
for(zzz = 0; zzz < 30; zzz++)
{}
}
var forFunc = function(){
for(zzz = 0; zzz < 5; zzz++){
alert("zzz:"+zzz);
cFunc();
}
alert("Scope leak if not 5:"+zzz);
}
【问题讨论】:
-
自从发布问题以来,我已经确认其他浏览器中的行为是相同的,并且如果 H 参数被声明为变量。
标签: javascript for-loop web scope global-variables