原例
function dd() {
i= 8;
document.getElementById("ddr").onclick = function (i) {
alert(i);
} ;
i = 9;
}
dd();
实际i是个全局变量,onclick执行时,会访问这个全局变更,此时全局变量的i已经变成9了
所以要这样写
function dd() {
var i= 8;
document.getElementById("ddr").onclick = function (i) {
return function () { alert(i) };
} (i);
i = 9;
}
这样写,不用声明全局变量,并且i只是个参数,如果i是简单类型,那么,在函数里面会复制这个参数,与原来的变量脱离关系.