• 闭包机制及浏览器垃圾回收处理


    题处理

    let x = 5;
    function fn(x) {
    return function (y) {
    console.log(y+(++x))
    }
    }
    let f = fn(6)
    f(7);
    fn(8)(9);
    fn(10)
    答案是:14、18、18
    函数执行,产生一个私有上下文,然后进栈,
    1.当函数执行完,一般情况下,当前形成的上下文都会出栈释放掉(优化内存),上下文释放,之前存储的私有变量也会释放
    2.但是如果当前上下文中某些东西(一般都是堆内存)被当前上下文以外事务占用,则当前上下文不能出栈释放,之前声明的私有变量也被存储起来
    市面上会把不能释放的上下文称为“闭包”
    闭包是一种机制,函数执行产生的私有上下文,一方面可以保护里面的私有变量不被污染,另一方面如果不释放,私有变量及相关信息也都会存储起来,我们把这种“保护”+“保存”的机制,称之为“闭包”
  • 相关阅读:
    Merge Sorted Array
    Remove Duplicates from Sorted List
    Integer to Roman
    String to Integer (atoi)
    Valid Parentheses
    3Sum
    Remove Duplicates from Sorted Array
    Swap Nodes in Pairs
    得到一个Object的属性
    在WebGrid中做 批量删除操作
  • 原文地址:https://www.cnblogs.com/zhx119/p/14295165.html
Copyright © 2020-2023  润新知