闭包 如果闭包的作用域中保存着一个 HTML 元素,则该元素无法被销毁。(下面代码来自高程) 闭包是 JavaScript 开发的一个关键方面:匿名函数可以访问父级作用域的变量。 function assgin() { var ele = document.getElementById('someEle'); ele.onclick = function(){ alert(ele.id); } } 以上代码创建了一个作为 ele 元素事件处理程序的闭包,而这个闭包有创建了一个循环的引用,由于匿名函数保存了一个 assgin() 的活动对象的引用 ,因此无法减少对 ele 的引用次数 , 只要匿名函数存在,ele的引用次数至少是 1。我们可以稍微改写一下: function assgin() { var ele = document.getElementById('someEle'); var id = ele.id ele.onclick = function(){ alert(id); } ele = null; }
一些js使用的注意事项可以看看 https://segmentfault.com/a/1190000010477169