我很好奇闭包中的变量是如何处理内存的。以此代码为例 -
function iAmAClosure() {
var txtName = document.getElementById('name');
function validation() {
if (txtName.value.length === 0) {
return false;
}
return true;
}
document.getElementById('submit').onclick = function () {
return validation();
}
}
每当用户点击按钮时,我的验证
函数就会被调用。
我的问题是,txtName
变量是在页面处于事件状态时一直保留在内存中,还是在每次调用方法验证时都被 GC 和初始化?那还有更多的东西吗?
什么是更好的性能?
最佳答案
只要有方法引用该函数,函数闭包中的任何变量都会保存在内存中。这里,txtName
位于 onclick
函数的闭包中,因此只要 onclick
绑定(bind)完好且“存在提交”按钮。
关于JavaScript 闭包和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21614895/