原例
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是简单类型,那么,在函数里面会复制这个参数,与原来的变量脱离关系.
本文通过一个具体的JavaScript示例,讲解了如何正确处理函数内部变量的作用域问题,避免因变量提升导致的预期外行为,并介绍了使用闭包来固定变量值的方法。
2万+

被折叠的 条评论
为什么被折叠?



