中国开发网: 论坛: 程序员情感CBD: 贴子 777491
有狐: 应该是这样,未测试
for (var i=1; i<prog_devices.length; i++)
{
if (prog_devices[i].id == devidx) continue;
function(i){
var target = prog_devices[i].id;
menuDevice.push({text:prog_devices[i].caption,
handler:function(){Gok.Smt.Prog.moveMats(prog, devidx, target)}});
}(i);
}

JavaScript的Closure环境由静态的句法结构确定。也就是说,代码一旦写成,我们就知道函数的自由变量同哪些环境里的变量绑定。因此,虽然运行时同一个内函数被调用多次,创建了多个闭包,但是这些闭包指向的都是同一个环境里的同一个变量,使用的是i的最终值

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录