当函数的返回值是一个引用数据类型并且被其他变量所引用,那么该函数就不会被释放了
function fn() {
var i = 10;
return function(n) {
console.log(n+(++i));
}
}
var f = fn();
f(10);
f(20);
fn()(10);
fn()(20);
- 自执行函数中的dom的点击事件会让自执行函数不销毁
var sp = document.getElementById('click');
var ip = document.getElementById('inp');
~function(){
var count = 1;
sp.onclick = function() {
ip.value = count++;
}
}();
sp.onclick = (function(){
var count = 0;
return function(){
alert('hah');
ip.value = count++;
}
})();
比较好的方法
sp.count = 0;
sp.onclick = function(){
sp.innerhtml = ++this.count;
}