循环中创建函数的问题
//糟糕的例子 var add_handlers = function(nodes){ var i; for(i = 0; i < nodes.length; i++){ nodes[i].onclick = function (e){ alert(i); }; } }; //结束糟糕的例子 //改进的例子 var add_handlers = function(nodes){ var helper = function(i){ return function(e){ alert(i); } }; var i; for(i=0; i< nodes.length; i+=1){ nodes[i].onclick = helper(i); } };
糟糕的例子问题在于事件处理器函数绑定了变量i本身,而不是函数在构造时的变量i的值。
避免在循环中创建函数。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步