首页 > 编程语言 >JavaScript闭包的概念

JavaScript闭包的概念

时间:2023-02-01 14:25:44浏览次数:48  
标签:闭包 function 函数 JavaScript 概念 let fun

什么是闭包?闭包有什么作用,缺点是什么?

闭包的概念:

  • JavaScript中函数会产生闭包(closure)。闭包是函数本身和该函数声明时所处的环境状态的组合;

  • 函数能够“记忆住”其定义时所处的环境,即使函数不在其定义的环境中被调用,也能访问定义时所处环境的变量;

  • 在JavaScript中,每次创建函数时都会创建闭包

闭包的作用:

  • 当闭包产生时,函数所处环境的状态会始终保持在内存中,不会在外层函数调用后被自动清除。这就是闭包的记忆性;

  • 模拟私有变量,即封装对象方法

闭包的缺点:

  • 不能滥用闭包,否则会造成网页的性能问题,严重时可能导致内存泄露(程序中已动态分配的内存由于某种原因未释放或无法释放)

闭包的表现形式:

  闭包是作用域应用的特殊情况,有两种表现:函数作为参数被传递,函数作为返回值被返回

  函数作为返回值:

 1 // 函数作为返回值
 2 
 3 function create(){
 4     let a = 100;
 5     return function(){
 6         console.log(a);
 7     }  
 8 }
 9 
10 let fun = create();
11 let a = 500;
12 fun(); // 100

  函数作为参数被传递:

 1 function print(fun){
 2     let a = 50;
 3     fun();  
 4 }
 5 
 6 let a = 362;
 7 function fn(){
 8     console.log(a);
 9 }
10 
11 print(fn);// 362

 

标签:闭包,function,函数,JavaScript,概念,let,fun
From: https://www.cnblogs.com/LannyChung/p/17082411.html

相关文章

  • web相关概念回顾、服务器软件_概述
    web相关概念回顾软件架构:C/S:客户端/服务器端B/S:浏览器/服务器端资源分类:静态资源:所有用户访问相同资源后,得到的结构都是一......
  • PHP一个典型的闭包实例
    <?php//一个基本的购物车,包括一些已经添加的商品和每种商品的数量。//其中有一个方法用来计算购物车中所有商品的总价格,该方法使//用了一个closure作为回调函数。class......
  • JavaScript 输入一个数 返回 2数相乘 使得 2数尽可能接近
    functiongetRC(pageCount){vara=Math.round(Math.sqrt(pageCount));for(vari=0;i<10;i++){varb=pageCount/(a+i);if(b===Math.round(b))......
  • Ai JavaScript 把桌面下面 所有的png 图片导入到 ai里面的 脚本 获取某目录下所有文件
    vardoc=app.activeDocument;//创建一个目录varinput=newFolder("C:\\Users\\Administrator\\Desktop");//获取input目录下面的所有png图片得到一个数组对象vard......
  • Swift开篇005->闭包
    PART_A背景闭包的概念:自包含的函数代码块,可以在代码中被传递和使用.用简洁语法构建内联闭包闭包的三种形式全局函数是一个有名字但不会捕获任何值的闭包嵌套函数是一个有......
  • Illustrator JavaScript 出血
    IllustratorJavaScript出血vardoc=app.activeDocument;varpt=72/25.4;varrc=1*pt;varls=6*pt;for(vari=0;i<doc.selection.length;i++){varshape=d......
  • JavaScript奇技淫巧:操控URL
    JavaScript奇技淫巧:操控URL本文展示两种不常见的JS编程技巧:实现操控浏览器窗口,更改父窗口和子窗口的URL地址。修改父窗口URL当使用window.open()打开一个窗口,可以用window.......
  • 面试官:你说说 JavaScript 中类型的转换机制
    前言面试官:“你说说JavaScript中类型的转换机制”紧张的萌新:“字符串跟其他类型拼接会变成字符串...”面试官:“...”······大家好,我是CoderBin。又来到了面试官......
  • JavaScript 中更安全的 URL 读写
    前言URL对于我们开发人员来讲,应该是非常熟悉了。在对URL进行参数拼接时,我们一般都会直接进行字符串拼接或使用模版字符串,因为这样非常方便,但是我们这样其实会在不知不觉中......
  • Nosql基本概念
    Nosql基本概念一、为什么使用Nosql1、单机Mysql时代90年代,一个网站的访问量一般不会太大,单个数据库完全够用。随着用户增多,网站出现以下问题数据量增加到一定程度,单机数据......