首页 > 其他分享 >以下对闭包(closure)理解正确的有 ABCD

以下对闭包(closure)理解正确的有 ABCD

时间:2023-11-10 22:55:05浏览次数:27  
标签:闭包 closure 函数 内部 ABCD 内存 变量

以下对闭包(closure)理解正确的有 ABCD

A
闭包是指有权访问另一个函数作用域中变量的函数;
B
函数内再嵌套函数,返回到外部形成闭包;
C
内部函数可以引用外层的参数和变量
D
参数和变量不会被垃圾回收机制回收

闭包的作用

​ 1 可以读取函数内部的变量

​ 2 可以把变量始终保存在内存中

​ 闭包的写法

​ 1 一个函数(即外部函数)里面包含另一个函数(即内部函数),并且return返回这个内部函数, 然后内部函数在定义内部函数之外的作用域被调
用,这时的内部函数就是一个闭包了。

​ 2 内部函数引用了外部函数的变量,这个变量不会被销毁,因为闭包需要这个变量, 所以通过闭包可以访问闭包保存的变量

                               function foo(){ 
                                         var n = 1; 
                                         function innerFoo(){ 
                                                    n += 1;
                                                    console.log(n);
                                         } 
                                        return innerFoo; 
                                } 
                                var func = foo(); 
                                func(); // 产生闭包innerFoo(),变量n保存在内存中 func();

​ 闭包的缺点 : 因为闭包的变量保存在内存中,内存泄漏,对内存的消耗很大,所以不要滥用闭包

​ 闭包常用的地方:

​ 1 es5 for循环事件监听

​ 2 函数里使用了定时器

​ 3 封装许多高级的功能集 减少闭包使用可以用立即执行函数传递变量

标签:闭包,closure,函数,内部,ABCD,内存,变量
From: https://www.cnblogs.com/longmo666/p/17825270.html

相关文章

  • Codeforces Round 903 (Div. 3) ABCDE
    CodeforcesRound903(Div.3)ABCDEA.Don'tTrytoCount题意:复制\(s\)串若干遍,是否能在\(s\)串中找到\(t\)串。思路:直接暴力,注意不要超限,会MLE//AConemoretimes//nndbk#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintmod=1e9+......
  • 《流畅的Python》 读书笔记 第7章_函数装饰器和闭包
    第7章函数装饰器和闭包装饰器这个名称可能更适合在编译器领域使用,因为它会遍历并注解句法树函数装饰器用于在源码中“标记”函数,以某种方式增强函数的行为。这是一项强大的功能,但是若想掌握,必须理解闭包如果你想自己实现函数装饰器,那就必须了解闭包的方方面面,因此也就需......
  • 闭包Closure
    闭包目的:实现函数的复用。php会自动把闭包函数转换为内置的Closure的对象实例,依赖Closure对象实例给闭包函数增加了更多的能力。闭包不能被实例(私有构造函数),也不能被继承(finally类)。可以通过反射来判断闭包实例是否能被实例,继承。 匿名函数php5.3时引入,匿名函数,又称Anonym......
  • 作用域和闭包
    一、作用域var可以重复声明,重复声明时实际是跳过声明处理,继续执行赋值操作。宽松模式下,a=2如果找不到a的声明,会在全局声明一个a;严格模式下严格模式禁止自动或隐式地创建全局变量。functionfoo(a){console.log(a+b);b=a;}foo(2);//ReferenceError:bisnot......
  • 前端歌谣-第贰拾陆课-闭包
    前言我是歌谣最好的种树是十年前其次是现在今天继续给大家带来的是闭包的讲解环境配置npminit-yyarnaddvite-D修改page.json配置端口{"name":"demo1","version":"1.0.0","description":"","main":"index.js",&......
  • JavaScript函数变量的生命周期,自执行函数、闭包、反转数组案例及冒泡排序案例
    一、变量的生命周期JavaScript变量的生命期从它们被声明的时间开始。局部变量会在函数运行以后被删除。全局变量会在页面关闭后被删除。二、自执行函数执行函数通常都是定义之后立即执行,以后都不再会调用,所以声明时可以省略函数名,因此自执行函数又叫匿名函数。通用的自执行......
  • 【闭包应用】JS:防抖、节流
    1、防抖:当进行连续操作时,只执行最后一次的操作。//防抖的概念是当进行连续操作时,只执行最后一次的操作。functiondebounce(fn,delayTime){lettimeout=null;returnfunction(){if(timeout){clearTimeout(timeout);......
  • 理解Golang的闭包
    闭包是指一个函数值(functionvalue),它可以引用其函数体之外的变量闭包代码示例funcmakeSuffix()func(strstring)string{ varsuffix=".jpg" returnfunc(strstring)string{ ifstrings.HasSuffix(str,suffix){ returnstr }else{ //引用函数体之外......
  • 自底向上的语法分析,闭包、GOTO函数
    自底向上的语法分析一、一个串ω归约(reduction)为文法开始符号的过程关键问题:1.何时进行规约,2.用哪个产生式规约句柄右边的串ω一定只包含终结符号。如果文法是无二义性的,那么文法的每个右句型都有且只有一个句柄二、LR(0)自动机Automaton项1.定义:产生式加上位于体中......
  • 经典闭包
     先看常见的问题internalclassProgram{staticvoidMain(string[]args){varactions=GetSomeAction();for(inti=0;i<actions.Count;i++)actions[i]();}staticList<Action>GetSomeAction(){......