带你深入理解什么叫js闭包

带你深入理解什么叫js闭包闭包用一句话总结:闭包就是作用域的延伸解释:函数内部的作用域属于局部作用域,导致只有函数内部才可以访问声明的变量。而闭包可以将局部作用域延伸,使其在函数外部也可以访问内部声明的变量等。关于变量的作用域js变量的作用域无非就两种局部变量和全局变量JavaScript在函数内部可以访问全局变量varn=0;//全局变量functionf1(){console.log(n)//0}f1();而在函数内部声明的局部变量,外部无法直接访问functionf1(

大家好,又见面了,我是你们的朋友全栈君。

闭包

用一句话总结:闭包就是作用域的延伸
解释:函数内部的作用域属于局部作用域,导致只有函数内部才可以访问声明的变量。而闭包可以将局部作用域延伸,使其在函数外部也可以访问内部声明的变量等。

关于变量的作用域

js变量的作用域无非就两种 局部变量全局变量

JavaScript在函数内部可以访问全局变量

var n = 0;//全局变量
function f1() { 
   
    console.log(n)//0
}

f1();

而在函数内部声明的局部变量,外部无法直接访问

function f1(){ 
   
    var n=0;//局部变量 
 	//需要注意的是一定要使用var关键字声明才会是局部变量
 	//若直接 n=0; n则是一个全局变量,外部可以访问
}
console.log(n)//n is not defined

此时思考一个问题,怎么样才能在外部访问函数内部的局部变量??

此时闭包的作用就体现出来了,看下方例子

function f1() { 
   
    var n = 0;
    // 此时f2函数就是闭包
    function f2() { 
   
        return n
    }
    return f2()
}
let n1 = f1();
console.log(n1)//0

解释:f1是f2的父级,所以在f2中可以访问f1中的局部变量,那么转换一下思路,通过 f2函数 将变量return出来,这样不就可以在f1函数的外部访问内部变量了吗

f2函数起到一个中间连接作用,在上面代码中f2函数就是闭包。换句话讲:闭包就是 可以访问到其他函数内部的变量 的函数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150273.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • @scheduled注解 定时任务控制(Spring响应式编程)

    概念项目经常会用到定时任务,实现定时任务的方式有很多种,参考Spring定时任务的几种实现。在Spring框架中,实现定时任务很简单。常用的实现方式是使用注解@Schedule。@Schedule常用来实现简单的定时任务。例如凌晨1点跑批,每1小时更新订单状态等。非SpringBoot项目springmvc-servlet.xml中添加配置<!–xmlns加入–>…

  • oracle触发器类型

    http://www.cnblogs.com/roucheng/p/3506033.html触发器是许多关系数据库系统都提供的一项技术。在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异

    2021年12月23日
  • 睿智的目标检测30——Pytorch搭建YoloV4目标检测平台

    睿智的目标检测30——Pytorch搭建YoloV4目标检测平台睿智的目标检测30——Pytorch搭建YoloV4目标检测平台学习前言什么是YOLOV4代码下载YOLOV4改进的部分(不完全)YOLOV4结构解析1、主干特征提取网络Backbone2、特征金字塔3、YoloHead利用获得到的特征进行预测4、预测结果的解码5、在原图上进行绘制YOLOV4的训练1、YOLOV4的改进训练技巧a)、Mosaic数据增强b)、LabelSmoothing平滑c)、CIOUd)、学习率余弦退火衰减2、loss组成a)、计算loss所需参数b)、y_pre是什么c)、y_tr

  • Hive索引

    Hive索引

  • 在线发送免费传真(五个网上免费发传真网站介绍)

    在线发送免费传真(五个网上免费发传真网站介绍)首先我们看到的是免费网络传真:faxZERO  官方网址是:http://faxzero.com/  这个免费传真适用于美国和加拿大,发送的传真上会自动附上广告,每次发传真只能发三页,也每天只可以发两次。  faxZERO无需你拥有一台传真机,也不需要注册用户即可在线发送免费网络传真,每天可发送2个免费网络传真,每个免费网络传真最多可发3个页面,支持.DOC(Word)和.

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号