从零开始学前端:垃圾回收机制,闭包,案例 --- 今天你学习了吗?(JS:Day11)

news2024/10/3 6:36:24

从零开始学前端:程序猿小白也可以完全掌握!—今天你学习了吗?(JS)

复习:从零开始学前端:作用域、执行顺序 — 今天你学习了吗?(JS:Day10)

文章目录

  • 从零开始学前端:程序猿小白也可以完全掌握!—今天你学习了吗?(JS)
    • 第十一节课:垃圾回收机制,闭包,案例
      • 一、垃圾回收机制
      • 二、变量声明周期
      • 三、闭包案例
      • 四、闭包优缺点
      • 五、代码回收规则

第十一节课:垃圾回收机制,闭包,案例

一、垃圾回收机制

JS的内存回收机制:一个函数在开始执行的时候,会给其中定义的变量划分内存空间保存,以备后面的语句所用,等到函数执行完毕返回了,函数内部的变量就被认为是无用的了,对应的空间也就被回收了。下次再执行此函数的时候,所有的变量又回到了最初的状态,重新赋值使用。

二、变量声明周期

变量声明周期:当一个变量的生命周期结束之后它所指向的内存就应该被释放。JS有两种变量,全局变量和在函数中产生的局部变量。局部变量的生命周期在函数执行过后九结束了,此时便可将它应用的内存释放(即垃圾回收),但全局变量声明周期会持续到浏览器关闭页面。

三、闭包案例

何为闭包?:就是函数可以访问其声明时所在作用域内的变量,根据这个特性可以在函数内返回一个函数,通过这个被返回的函数可以在函数外部访问函数内的变量;

形成闭包的条件?:1.函数嵌套函数(有作用域的嵌套);2.内部函数使用了外部函数的变量/参数;

闭包的作用是什么?:内部函数使用了外部函数的变量或参数会被永久的保存下来。

案例:

        function fn() {
            var a = 1;
            return function () {
                console.log(++a)
            }
        }
        var fn2 = fn();

        fn2();//2
        fn2();//3
        fn2();//4

        var fn3 = fn();//如果说开辟了一个新的空间,那么将被重新地赋值;
        fn3();//2

输出:
在这里插入图片描述

四、闭包优缺点

闭包优点

  1. 使用的变量会被存储不会被回收(在关闭程序释放),我们可以对同一个变量连续性进行多次操作;
  2. 避免全局变量被污染

闭包的缺点

  1. 不关闭页面的时候,闭包会一直占用内存空间
  2. 无法回收变量,导致内存无法得到释放/内存泄漏(是指程序中已动态分配的堆内存由于某种原因未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至熊崩溃等严重后果)

五、代码回收规则

  1. 全局变量不会被回收。(函数除外)
  2. 局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁
  3. 只要被另外一个作用域所引用就不会被回收

预习:从零开始学前端:字符串、数组的方法 — 今天你学习了吗?(JS:Day12)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/7260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络编程——封装和分用(图解)

一、什么是封装 💌💌💌网络编程中的封装,并不是Java面向对象思想里的封装,继承,多态的封装.它是应用程序通过TCP协议传送数据时,每一次进行包装送入网络中,像极了发快递时的你. 思考…

FFplay文档解读-51-多媒体资源

33. 多媒体资源 以下是当前可用多媒体源的说明。 33.1 amovie 这与电影源相同,但默认情况下会选择音频流。 33.2 movie 从电影容器中读取音频和/或视频流。 它接受以下参数: filename要读取的资源的名称(不一定是文件;它也可以是通过某…

[附源码]java毕业设计基于web的健康信息管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Oracle Primavera Unifier文档管理器(Document Manager)

目录 引言 介绍 引言 在 Oracle Primavera Unifier 中,文档管理器维护项目的所有文件和文档。每个项目/外壳都包含自己的文档管理器,另一个文档管理器驻留在公司级别。管理员确保员工和项目/shell 成员始终使用最新版本的文档,并使访问和分…

热成像仪在LED产品的应用

热成像仪对LED产品的检测 LED产品检测 LED作为取代传统照明工具(如白炽灯、卤素灯等)的新型光源,但其散热效果严重影响LED的实际使用寿命,散热工艺成为LED应用和发展的关键因素,红外热像仪可以进行LED温度检测,帮助验证散热工艺。…

如何对珍贵水生物标本提供三维重建,数字化技术助力长江大保护...

近日,由武汉白鱀豚保护基金会发起的“看见长江的美好”系列长江大保护行动中,英特尔 Evo X BMW i 打造了“移动数字探索工作室”,携手【云端地球】团队来到了拥有百年生命印记的地方,这里收藏着包括白鲟、白鱀豚、中华鲟、长江江豚…

密码在智能汽车数据安全领域的应用研究报告

开放隐私计算 开放隐私计算 开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神,专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播,愿成为中国 “隐私计算最后一公里的服务区”。 177篇原创内容 …

HTTP状态码301和302的区别

简介 在HTTP状态码中,3XX表示重定向,指网页发生了转移,重定向到目标地址中。 301:表示永久性转移 (Permanently Moved) 302:表示临时性转移(Temporarily Moved) 说明…

java基础新

目录 集合总结 ​编辑Java异常体系 常见的运行时异常? Object类有哪些方法 ​编辑权限修饰符 分布式锁 Redis和Zookeeper实现分布式所哪个效率高 分布式事务 事务失效的8种原因 TCC 如果出现网络连不通怎么办? CAP理论 CAP有哪些组合方式&…

3环境变量

文章目录前言1. 概念引入2. 环境变量PATH3. 本地环境变量与系统环境变量4. set 和 env5. main函数带参数前言 大家一开始学习Linux时候,是否对其各种命令感到过好奇,为何这样输入不同就会执行不同,他的底层实现逻辑到底是怎么样的呢? 在解答这个疑惑之前,我们需要学习环境变…

计算机网络-网络层(移动IP通信过程,网络层设备路由器,路由表与路由转发)

文章目录1. 移动IP2. 网络层设备(路由器)1. 移动IP 移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能. 并保证了基于网络lP的网络权限在漫游过程中不发生任何改变。 重点知识点: 移动结点…

互联网食堂大比拼,谁才是互联网养猪场?

虽然疫情导致经济不景气,但是互联网行业怎么会如此不禁波折呢? 果不其然,疫情下的大厂还是大厂! 互联网大厂的福利多多,其中最容易让人忽视,但也最让人羡慕的就是互联网大厂的食堂了。 民以食为天&#xff…

线粒体 ClpP 介导的蛋白水解作用可选择性诱导癌细胞死亡

图1. 本篇文章的几大亮点 首先,研究人员利用基因工程的方法,在人 ClpP 上建造了一个有持续活性地点突变(Y118A)。基于 OCL-AML3 和 Z138 肿瘤细胞系,研究人员研究 Y118A 点突变对于肿瘤细胞的影响。研究发现&#xff…

耗时半月,终于把牛客网上的Java面试八股文整理成了PDF合集

前段时间有不少小伙伴们私信我,最近的面试题越来越困难了,要背的八股文也越来越多了,考核的也越来越细腻了,摆明了就是想让我们面试造航母嘛,真的是太为难我们这些程序员了。。。 这不,为了帮大家节约时间…

如何对低代码/无代码平台进行分类?

如何对低代码/无代码平台进行分类?一个例子就能讲清楚! 周末你外出露营,在野外需要搭一个帐篷。有两种方法: 一种是最原始的搭帐篷方法,即有隔水布、外账、内账、营柱骨架等等......另一种是直接“封装好”的&#x…

MOCO----Momentum Contrast

对比学习 这个博客写的很好,去看他的吧 对比学习是一种在高维(即指图片)的连续的输入信号上去构建字典的一种方式,这个字典是动态,因为这个字典里的key都是随机去取样的,而且用来给这些key做编码的也是在训练过程中不停地改变的…

程序环境和预处理

文章目录1.程序的翻译环境和执行环境2.详解编译 链接2.1 翻译环境2.3 运行环境3.预处理详解3.1 预定义符号3.2 #define3.3 宏和函数对比3.4 #undef3.5 条件编译1.程序的翻译环境和执行环境 在ANSI C的任何一种实现中,存在两个不同的环境。 第一种是翻译环境&#…

AlexNet网络详解

目录:AlexNet网络详解一、背景二、模型结构三、网络的参数配置四、每一层作详细的分析一、背景 2012年,Alex Krizhevsky等人在多伦多大学的实验室设计出了一个深层的卷积神经网络AlexNet,夺得了2012年ImageNet LSVRC的冠军,且准确…

Redis学习(1)—— 下载、安装、启动服务、连接redis服务

Redis是基于内存的数据结构存储系统,可以作为数据库、缓存、任务队列、消息队列、分布式锁 Redis是key-value数据库,非关系型数据库 一. Windows 1. 下载 下载地址:https://github.com/microsoftarchive/redis/releases 2. 安装 直接…

UNet - unet网络

目录 1. u-net介绍 2. u-net网络结构 3. u-net 网络搭建 3.1 DoubleConv 3.2 Down 下采样 3.3 Up 上采样 3.4 网络输出 3.5 UNet 网络 UNet 网络 forward 前向传播 3.6 网络的参数 4. 完整代码 1. u-net介绍 Unet网络是医学图像分割领域常用的分割网络&#xff0…