zoukankan      html  css  js  c++  java
  • 26 .闭包 、函数表达式在for中无法接受实时改变的变量、 在for里要将函数表达式封装成闭包才能接受实时变化的参数,并要将函数表达式return出去

    【AO 执行完会被垃圾回收机制回收以免占用内存,造成卡顿。函数每次执行都会创建新的AO

    如何被回收:砍掉指向堆内存的栈内指针,并清空占用的堆内存。】

    闭包:关于闭包最简单的描述是 ECMAScript允许使用内部函数--即函数定义和函数表达式位于另一个函数的函数体内。

              而且,这些内部函数可以访问他们所在的外部函数中所有的局部变量、参数和声明的其他内部函数。

             当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。

             也就是说,内部函数会在外部函数返回后被执行。

    1.  inner()就是闭包

                               

    2 很重要:在for里要将函数表达式封装成闭包,才能传参,使函数表达式里的变量发生实时变化

       数组中每一项都是10

    ♥♥♥:很重要:在for里要将函数表达式封装成闭包,才能传参,使函数表达式里的变量发生实时变化

     函数表达式无法接收for中的变量,只能在for循环结束后去找i 的值

     原因:在预解析中,为for循环里的每个数组对象arr[i] 对应的都是 function(){ console.log(i)}   ,当for循环结束,i=10,之后才开始堆function(){console.log(i)}里的 i 开始赋值。

    解决方法: 在函数表达式外边套上自执行函数,将变量 i 传递进去,使得函数表达式成为闭包里的函数可以实时接受外部变量     

                        用自执行函数封装函数表达式,成为闭包后,要将函数表达式return出去 

     

     return 函数名

           

  • 相关阅读:
    NullPointerException
    面试oracle 经常问的一个问题- 事务
    python 之 import、from、as 关键字的 白话 解释与例子
    python 学习 之 第二章(条件、循环和其他语句)
    python学习 之 第一章 (简单例子与常用数据类型)
    python中常用函数含义记录
    python 2 版本中的input() 和 raw_input() 函数的比较
    字符串处理关键字str 和 repr
    文件操作-一个可以直接复制文件数据的小程序
    C语言 32个关键字
  • 原文地址:https://www.cnblogs.com/yzdwd/p/12517555.html
Copyright © 2011-2022 走看看