• javascript代码工具库


    1. 垃圾收集

    另一个块作用域非常有用的原因和闭包及回收内存垃圾的回收机制相关。这里简要说明一

    下,而内部的实现原理,也就是闭包的机制会在第 5 章详细解释。

    考虑以下代码:

        function process(data) {
            // 在这里做点有趣的事情
        }
        var someReallyBigData = { .. };
        process( someReallyBigData );
        var btn = document.getElementById( "my_button" );
        btn.addEventListener( "click", function click(evt) {
            console.log("button clicked");
        }, /*capturingPhase=*/false );

    click 函数的点击回调并不需要 someReallyBigData 变量。理论上这意味着当 process(..) 执

    后,在内存中占用大量空间的数据结构就可以被垃圾回收了。但是,由于 click 函数形成

    了一个覆盖整个作用域的闭包,JavaScript 引擎极有可能依然保存着这个结构(取决于具体

    实现)。

    块作用域可以打消这种顾虑,可以让引擎清楚地知道没有必要继续保存 someReallyBigData 了:

        function process(data) {
            // 在这里做点有趣的事情
        }
        // 在这个块中定义的内容可以销毁了!
        {
            let someReallyBigData = { .. };
            process( someReallyBigData );
        }
        var btn = document.getElementById( "my_button" );
        btn.addEventListener( "click", function click(evt){
            console.log("button clicked");
        }, /*capturingPhase=*/false );

    1. 垃圾收集 另一个块作用域非常有用的原因和闭包及回收内存垃圾的回收机制相关。这里简要说明一 下,而内部的实现原理,也就是闭包的机制会在第 5 章详细解释。 考虑以下代码: function process(data) { // 在这里做点有趣的事情 } var someReallyBigData = { .. }; process( someReallyBigData ); var btn = document.getElementById( "my_button" ); btn.addEventListener( "click", function click(evt) { console.log("button clicked"); }, /*capturingPhase=*/false ); 34 | 第 3 章 click 函数的点击回调并不需要 someReallyBigData 变量。理论上这意味着当 process(..) 执 行后,在内存中占用大量空间的数据结构就可以被垃圾回收了。但是,由于 click 函数形成 了一个覆盖整个作用域的闭包,JavaScript 引擎极有可能依然保存着这个结构(取决于具体 实现)。 块作用域可以打消这种顾虑,可以让引擎清楚地知道没有必要继续保存 someReallyBigData 了: function process(data) { // 在这里做点有趣的事情 } // 在这个块中定义的内容可以销毁了! { let someReallyBigData = { .. }; process( someReallyBigData ); } var btn = document.getElementById( "my_button" ); btn.addEventListener( "click", function click(evt){ console.log("button clicked"); }, /*capturingPhase=*/false );

  • 相关阅读:
    MFC发送自定义消息
    NDIS LWF:NdisFSendNetBufferLists蓝屏(DRIVER_IRQL_NOT_EQUAL_OR_LESS)
    CreatFile打开驱动失败
    反向代理和正向代理区别(转)
    MFC对文件文件夹转移、删除、重命名、复制【转】
    解决 OnDropFiles 可能无响应的问题【转】
    HTML5
    Spring常见面试题总结
    Mybatis常见面试题总结
    MyBatis
  • 原文地址:https://www.cnblogs.com/wangweizhang/p/9199640.html
Copyright © 2020-2023  润新知