闭包、作用域

闭包、作用域一 闭包是什么 闭包 closure 就是能够读取其他函数内部变量的函数 在 javascript 中 只有函数内部的子函数才能读取局部变量 所以闭包可以理解成 定义在一个函数内部的函 在本质上 闭包是将函数内部和函数外部连接起来的桥梁 闭包的最典型的应用是实现回调函数 callback 二 JS 中闭包的优缺点及特性 优点 1 保护函数内的变量安全 2 在内存中维持一个变量 用的太多就变成了缺点 占内存 3 逻辑连续 当闭包作为另一个函数调用的参数时

一、闭包是什么?

闭包(closure)就是能够读取其他函数内部变量的函数。在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成 “定义在一个函数内部的函”。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。(闭包的最典型的应用是实现回调函数(callback) )。

二、JS中闭包的优缺点及特性

→ 优点:

→ 缺点:

→ 特性:

  1. 函数嵌套函数
  2. 内部函数可以访问外部函数的变量
  3. 参数和变量不会被回收

作用域:它是指对bai某一变量和方法具有du访问权限的代码空间, 在JS中, 作用域是zhi在函数中维护的。表示dao变量或函数起作用的区域,指代了它们在什么样的上下文中执行,亦即上下文执行环境。Javascript的作用域只有两种:全局作用域和本地作用域,本地作用域是按照函数来区分的。
闭包:在js中的我的理解就是函数嵌套函数,当内部函数在定义它的作用域的外部被引用时,就创建了该内部函数的闭包 ,如果内部函数引用了位于外部函数的变量,当外部函数调用完毕后,这些变量在内存不会被 释放,因为闭包需要它们.

注意
1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便
改变父函数内部变量的值。


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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222447.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:47
下一篇 2026年3月17日 下午3:47


相关推荐

  • Navicat Premium15安装与激活(完整激活版)

    Navicat Premium15安装与激活(完整激活版)NavicatPremium15安装与激活(完整激活版)引文:NavicatPremium15安装与激活(完整激活版)注:该文章用于下载软件包及激活成功教程包引文1:NavicatPremium15安装与激活(完整激活版)注:该文章用于下载软件包及激活成功教程包,激活全过程…

    2022年10月13日
    3
  • 蓝牙硬件设备没有链接到计算机,电脑未发现蓝牙硬件设备怎么办

    蓝牙硬件设备没有链接到计算机,电脑未发现蓝牙硬件设备怎么办有时我们想连接蓝牙硬件设备 却发现找不到了 没发现 怎么办 下面是学习啦小编为大家介绍电脑未发现蓝牙硬件设备的解决方法 欢迎大家阅读 电脑未发现蓝牙硬件设备的解决方法首先我们在桌面找到 我的电脑 当然如果是 WIN7 WIN8 等系统以上的电脑则是找到 计算机 选项图标 然后右键点选 管理 选项 在我们点击管理选项后 进入到计算机管理的窗口面板 这里我们找到且点击 服务和应用程序 选项 然后打开服务

    2026年3月19日
    2
  • MAC电脑用adb命令安装APK

    MAC电脑用adb命令安装APK目录开始过程结果开始分别在命令行里面输入以下命令:touch.bash_profileopen-e.bash_profilesource.bash_profileadbversion过程这个时候会弹出一个这种框需要你配置路径比如我的路径是这个命令:exportPATH=${PATH}:–…

    2022年6月1日
    90
  • OpenClaw安装及接入飞书方法

    OpenClaw安装及接入飞书方法

    2026年3月13日
    2
  • ubuntu12.04 安装rabbitvcs[通俗易懂]

    ubuntu12.04 安装rabbitvcs[通俗易懂]习惯了在windows下的Tortoisesvn,所以转到ubuntu下面很不习惯命令行的svn。而且,个人感觉如果需要showlog和diff的话都很不爽。今天和一个朋友聊天,他推荐我使用RabbitVCS。类似与Tortoisesvn。安装RabbitVCS的方法步骤如下:1、sudoadd-apt-repositoryppa:rabbitvcs/ppa     #将rab

    2022年7月18日
    19
  • linux 命令route add default dev eth0和route add default gw eth0的区别?[通俗易懂]

    linux 命令route add default dev eth0和route add default gw eth0的区别?[通俗易懂]本机以太网卡eth0的IP地址为手动配置:网关IP地址为192.168.1.1/24#ifconfigeth0192.168.1.100netmask255.255.255.0  #routeadddefaultdeveth0           //默认路由,将去往未知网络的数据包全部从接口eth0发出去测试结果为ping外网失败;[root@localh

    2022年8月11日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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