ES6学习笔记

作用域

1.4垃圾回收机制

内存的生命周期

JS环境中分配的内存,一般有如下生命周期

  • 内存分配:当我们声明变量、函数、对象的时候,系统会自动为他们分配内存1.2.
  • 内存使用:即读写内存,也就是使用变量、函数等
  • 内存回收: 使用完毕,由垃圾回收器自动回收不再使用的内存

说明:

  • 全局变量一般不会回收(关闭页面回收)
  • 一般情况下局部变量的值,不用了,会被自动回收掉

内存泄漏:程序中分配的内存由于某种原因程序未释放或无法释放叫做内存泄漏

拓展-JS垃圾回收机制-算法说明

下面介绍两种常见的浏览器垃圾回收算法:引用计数去和 标记清除法

标记清除法

现代的浏览器已经不再使用引用计数算法了

现代浏览器通用的大多是基于标记清除算法的某些改进算法,总体思想都是一致的。

核心

  • 标记清除算法将“不再使用的对象”定义为“无法达到的对象".
  • 就是从根部(在]S中就是全局对象)出发定时扫2.内存中的对象。凡是能从根部到达的对象,都是还需要使用的。
  • 那些无法由根部出发触及到的对象被标记为不再使用,稍后进行回收

1.5 闭包

  • 目标: 能说出什么是闭包,闭包的作用以及注意事项
  • 概念:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用:
  • 简单理解:闭包=内层函数 + 外层函数的变量
  • 作用:封闭数据,提供操作,外部也可以访问函数内部的变量
  • 闭包应用:实现数据的私有

先看个简单的代码:

function fn() {
    var num = 10;

    function fun() {
        console.log(num);

    }
    fun();
}
fn();

总结

1.怎么理解闭包?

闭包 = 内层函数 +外层函数的变量

2.闭包的作用?

封闭数据,实现数据私有,外部也可以访问函数内部的变量闭包很有用,因为它允许将函数与其所操作的某些数据 (环境)关联起来

3.闭包可能引起的问题?

内存泄漏

1.6变量提升

目标:了解什么是变量提升

变量提升是javaScript 中比较“奇怪”的现象它允许在变量声明之前即被访问 (仅存在于var声明变量)注意:

1.变量在未声明即被访问时会报语法错误

2.变量在var声明之前即被访问,变量的值为 undefined

3let/const声明的变量不存在变量提升

4.变量提升出现在相同作用域当中

5.实际开发中推荐先声明再访问变量

总结

1.用哪个关键字声明变量会有变量提升?

var

2.变量提升是什么流程?

先把var变量提升到当前作用域于最前面只提升变量声明,不提升变量赋值然后依次执行代码我们不建议使用var声明变量

  • 1.把所有var声明的变量提升到 当前作用城的最前面
  • 2.只提升声明, 不提升赋值

函数进阶

2.1函数提升

目标:能说出函数提升的过程

函数提升与变量提升比较类似,是指函数在声明之前即可被调用

知道函数参数默认值、动态参数、剩余参数的使用细节,提升函数应用的灵活度,知道箭头函数的语法及与普通函数的差异

  1. 1。会把所有函数声明提升到当前作用域的最前面
  2. 2。只提升函数声明,不提升函数调用
  3. 函数表达式 必须先声明和赋值,后调用 否则 报错

总结

  • 1.函数提升能够使函数的声明调用更灵活
  • 2函数表达式不存在提升的现象
  • 3.函数提升出现在相同作用域当中

2.2 函数参数

函数参数的使用细节,能够提升函数应用的灵活度
学习路径
1.动态参数

arguments 是函数内部内置的伪数组变量,它包含了调用函数时传入的所有实参

总结:

    • 1arguments 是一个伪数组,只存在于函数中
    • 2.arguments的作用是动态获取函数的实参
    • 3.可以通过for循环依次得到传递过来的实参

1.当不确定传递多少个实参的时候,我们怎么办?

arguments 动态参数

2.arguments是什么?

    • 伪数组
    • 它只存在函数中
  1. 剩余参数

1…是语法符号,置于最末函数形参之前,用于获取多余的实参

2.借助 …获取的剩余实参,是个真数组

开发中,提倡使用多使用:剩余参数

展开运算符

目标:能够使用展开运算符并说出常用的使用场景展开运算符(…),将一个数组进行展开

2.3 箭头函数 (重要)

目标:能够熟悉箭头函数不同写法

目的:引入箭头函数的目的是更简短的函数写法并且不绑定this,箭头函数的语法比函数表达式更简洁

使用场景:箭头函数更适用于那些本来需要匿名函数的地方

学习路径:

  1. 基本语法

总结

1.箭头函数属于表达式函数,因此不存在函数提升

2.箭头函数只有一个参数时可以省略圆括号 ()

3.箭头函数函数体只有一行代码时可以省略花括号#,并自动做为返回值被返回

4加括号的函数体返回对象字面量表达式

  1. 箭头函数参数

普通函数有arguments 动态参数

箭头函数没有 arguments 动态参数,但是有 剩余参数 …args

  1. 箭头函数this

在箭头函数出现之前,每一个新函数根据它是被如何调用的来定义这个函数的this值,非常令人讨厌箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this。

箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this.

总结

1.箭头函数里面有this吗?

箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this

2.DOM事件回调函数推荐使用箭头函数吗?

不太推荐,特别是需要用到this的时候

事件回调函数使用箭头函数时,this 为全局的 window

解构赋值

  • 数组解构

数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法

基本语法:

1.赋值运算符 =左侧的用于批量声明变量,右侧数组的单元值将被赋值给左侧的变量2.变量的顺序对应数组单元值的位置依次进行赋值操作

  • 对象解构

目标:知道解构的语法及分类,使用解构简洁语法快速为变量赋值

数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法

基本语法:典型应用交互2个变量

注意: js 前面必须加分号情况

1.立即执行函数

2.数组解构

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BRC20赛道的刚需基础设施,BrccSwap如何延续新的造富神话?

引言 BRC20代币和去中心化交易所的背景 BRC20代币赛道的刚需SWAP BrccSwap如何延续新的造富神话 结语 引言 随着加密货币市场的不断发展,BRC20代币和去中心化交易所成为了越来越受欢迎的概念。BRC20代币是建立在比特币区块链上的代币,具有高级别的…

Dalamud 插件开发白皮书 P1 - Getting started

文章目录 从哪里开始 How do I get started?Dalamud 插件例子Dalamud 底层探究XIVLauncher 启动器 在哪里寻找帮助 Where do I ask for help?如何热重载插件 How do I hot-reload my plugin?如何调试插件,甚至游戏?如何在编码过程中使用 How do I use…

浅谈微前端

本文呢是我梳理的一个扫盲文,由于最近团队准备使用微前端对项目进行改造,所以我呢就先浅了解一下: 微前端到底是什么? 为什么要使用微前端? 都有哪些微前端方案? 微前端有什么不好的地方吗? 通过…

手动渲染农场和自助云渲染农场的区别

手动渲染农场和自助云渲染农场是两种常见的渲染方式,它们各有优缺点。手动渲染农场指的是在本地使用自己的硬件设备进行渲染,而自助云渲染农场则是利用云服务商提供的计算资源进行渲染。对于需要渲染大规模项目的设计师或工作室来说,选择一种…

C++11学习笔记(3)——通用工具(上)(包含重要特性智能指针Smart pointer)

1.Pair 在C11中&#xff0c;std::pair是一个模板类&#xff0c;用于将两个值组合成一个单元。它可以将两个不同的类型的值配对在一起&#xff0c;并且提供了对这对值的访问和操作。 std::pair的定义 template<class T1, class T2> struct pair{T1 first;T2 second; };…

【JAVA开发环境配置】 卸载JDK很简单, 一分钟帮你搞定!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&#x1…

Context Prior for Scene Segmentation--CVPR, 2020

Context Prior for Scene Segmentation–CVPR, 2020 文章目录 Context Prior for Scene Segmentation--CVPR, 2020一、背景介绍二、方法介绍1.A的生成2.Affinity Loss3.如何从 X X X获取P4.Y操作 一、背景介绍 问题&#xff1a;现阶段&#xff0c;不少语义分割方法所限于卷积结…

Android12之如何查看hidl服务(一百五十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

软件项目管理需要具备哪些能力?

作为一名软件项目管理者&#xff0c;在处理许多事情时需要不断提高个人在数据分析处理、项目业务流程管理等各个领域的能力。当然作为过来人&#xff0c;我也很清楚很多软件项目管理新人也较为疑惑如何提高自己的能力和专业水平&#xff0c;以便提高工作效率。那我也想与大家唠…

开源反分裂与数字大同世界

这是一篇报告的读后感&#xff0c;这篇报告是由Linux基金会研究部门发布的&#xff0c;名为《助力全球协作——开源代码的领导者如何面对分裂的挑战》。 这份报告的主要内容包括&#xff1a; - 开源代码开发中的分裂及其利弊- 开源的国际化&#xff0c;以及项目领导者如何克服参…

Python3数据分析与挖掘建模(16)特征降维与特征衍生

1. 特征降维&#xff08;PCA&#xff09; 回顾知识点&#xff1a; 特征降维是指将高维特征空间的数据映射到低维空间的过程&#xff0c;以减少特征的数量并保留数据的主要信息。下面是特征降维的一般步骤&#xff1a; &#xff08;1&#xff09;求特征协方差矩阵&#xff1a…

可调电源LM317 的内部原理 - 特殊的电压跟随器

之前一直没想过这类LDO 内部是怎么整的&#xff0c;它似乎是用一个分压电路采集它输出的电压作为参考&#xff0c;然后却能把输出电压稳定下来&#xff0c;颇有种左脚踩右脚上天的意思。典型的LM317 电路如下&#xff1a; 如果是个普通的电压跟随器&#xff0c;无论是基于三极管…

牛客小白月赛56

今天无聊vp了一下 A.省略 B.最优肯定是全部都是1 C.直接统计每个余数下可以填多少个数&#xff0c;然后排序从小到大的排序输出即可 #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <queue> #inc…

【八大排序(六)】快排终极篇-快速排序非递归版

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:八大排序专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习排序知识   &#x1f51d;&#x1f51d; 快排非递归版 1. 前情回顾2. 快排非递归基…

windows10家庭版禁用Device/Credential Guard解决方案

文章目录 背景&#xff08;禁用的原因&#xff09;解决的方式方式一&#xff1a;通过Windows本身的功能设置禁用 ( 非家庭版的使用)1. 禁用Device Guard或Credential Guard&#xff1a;2. 关闭Hyper-V选项3. 重启电脑 方式二&#xff1a;通过命令关闭Hyper-V ( Windows 10家庭版…

java三大特性之【多态】

多态 1.1 概念1.2 实现条件1.3 方法重写&#xff08;override&#xff09;与方法重载&#xff08;overload&#xff09;1.4 向上转型1.5 向下转型 1.1 概念 同样的一个方法/行为&#xff0c;经过不同的对象&#xff0c;表现出不同的行为&#xff0c;这样的现象就称为多态。 举…

二叉搜索树之AVL树

目录 1.概念 2.定义 3.插入 4.旋转 1. 新节点插入较高左子树的左侧---右单旋 2. 新节点插入较高右子树的右侧---左单旋 3. 新节点插入较高左子树的右侧&#xff1a;先左单旋再右单旋【左右双旋】 4. 新节点插入较高右子树的左侧---右左&#xff1a;先右单旋再左单旋【右…

I.MX6ULL_Linux_驱动篇(37) linux系统定时器

定时器是我们最常用到的功能&#xff0c;一般用来完成定时功能&#xff0c;本章我们就来学习一下 Linux 内核提供的定时器 API 函数&#xff0c;通过这些定时器 API 函数我们可以完成很多要求定时的应用。 Linux内核也提供了短延时函数&#xff0c;比如微秒、纳秒、毫秒延时函数…

Car Guide

文章目录 科目一第一章 机动车驾驶证申领和使用规定第一节 驾驶证的许可&#xff1f;种类和有效期第二节 驾驶证的申领第三节 驾驶证的使用第四节 驾驶考试第五节 违法记分制度 第二章 交通信号第一节 交通信号灯第二节 交通标志第三节 交通标线第四节 交警手势 第三章 道路交通…

【编程语言 · C语言 · 递归函数】

递归函数 C 语言的函数都支持递归, 也就是说&#xff0c;每个函数都可以直接或者间接第调用自己。所谓的间接调用&#xff0c;是指在递归函数调用的下层函数中再调用自己。 递归关系图如下&#xff1a; 递归之所以能实现&#xff0c;是因为函数的每个执行过程在栈中都有自己的…