• 坤海
    2022-10-15 来自北京
    老师,全局变量会存到闭包里吗?为什么在闭包里用全局变量会影响性能呢?

    作者回复: 全局变量是可以在闭包里引用的。闭包里引用全局变量会影响性能是因为全局变量在函数执行销毁后,不会随着函数销毁,还会存在。

    
    2
  • Nuvole Bianche
    2023-03-25 来自上海
    这一讲和我之前看的极客时间中李兵老师的专栏《浏览器工作原理》冲突点有点大。在李老师的专栏,他说的是:函数体中的代码在解析阶段并不会解析编译,而是在函数调用时会对函数体中的代码进行解析编译,创建函数执行上下文,作用域和可执行代码,并压入到调用栈栈顶,而本讲中的流程图和原文讲 :”根据流程图中的红色虚线框部分所示,在词法分析后,JavaScript 引擎会在做语法分析的同时,更新全局作用域和创建局部作用域。“ 本文后面从时间角度看,给我的认知也是一样的:函数体中的执行上下文,变量环境,词法环境等在一开始就解析全局作用代码时就准备好了,只是在执行阶段再入栈而出栈而已。 希望专栏老师解答一下。
    
    2
  • 奇得隆冬强
    2023-03-15 来自上海
    闭包 在 JavaScript 中,根据词法作用域的规则,内部函数总是可以访问其外部函数中声明的变量,当通过调用一个外部函数返回一个内部函数后,即使该外部函数已经执行结束了,但是内部函数引用外部函数的变量依然保存在内存中,我们就把【这些变量的集合称为闭包】。 比如外部函数是 foo,那么这些变量的集合就称为 foo 函数的闭包。
    
    
  • 奇得隆冬强
    2023-03-15 来自上海
    老师问个问题: 函数是对象,所以它肯定在堆上了。 那你说的那个函数执行完销毁,是指的什么,是整个对象的销毁??
    共 1 条评论
    
  • 奇得隆冬强
    2023-03-15 来自上海
    function createCounter(){ let i=0; function increment(){ i++; } function getValue(){ return i; } return {increment,getValue} } const counter = createCounter(); 这里为啥要用 let 呢?? 我试了下不用 let 也是对的。
    
    
  • 穷精致
    2023-02-03 来自北京
    所以应该怎么理解闭包呢?
    共 1 条评论
    
  • kingsley
    2022-11-24 来自浙江
    这一节理解难度++
    共 1 条评论
    
  • 卡卡
    2022-10-13 来自江苏
    在函数式编程中,可以用闭包实现partial application
    
    