JavaScript 闭包和内存管理

标签 javascript performance memory-management closures

我很好奇闭包中的变量是如何处理内存的。以此代码为例 -

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/

相关文章:

javascript - 使用 AJAX 将变量从 JavaScript 传递到 PHP 不会显示任何内容

javascript - jquery 选择具有值的类

javascript - Node.Js 服务器不断崩溃,但没有错误

javascript - 请解释跨浏览器 string.length 的这种差异

java - 始终避免 Java 中的递归方法?

c++ - 重载删除和检索大小?

performance - : {REST API, 网站} --> {数据库} 或 {网站} --> {REST API} --> {数据库} 哪个更好?

sql - 未选择一大列时 SQL Mobile 中的性能

swift - 在媒体繁重的 swift 应用程序中管理内存的正确方法是什么?释放它?

ios - 大量 UIWebView 内存泄漏