三千字回顾ES6

ECMA2017官方文档-英文版 ECMA官方文档-英文版 https://www.ecma-international.org/ecma-262 https://www.ecma-international.org/ecma-262/8.0/index.html 立即下载

es6

JS代码执行过程中需要了解的ECMA文档的术语

  • 执行上下文栈:Execution Context Stack,用于执行上下文的栈结构;
  • 执行上下文:Execution Context,代码在执行之前会先创建对应的执行上下文;
  • 变量对象:Variable Object,上下文关联的VO对象,用于记录函数和变量声明;
  • 全局对象:Global Object,全局执行上下文关联的VO对象;
  • 激活对象:Activation Object,函数执行上下文关联的VO对象;
  • 作用域链:scope chain,作用域链,用于关联指向上下文的变量查找;

let/const基本使用

ES6开始新增了两个关键字可以声明变量:let、const

  • let、const不允许重复声明变量
  • let 不会作用域提升
  • let、const在执行声明代码前是不刻意访问的

var、let、const的选择

  1. 在未来的开发中 很少会使用var 来声明变量来开发了
  2. let const 比较推荐在开发中使用
  3. 推荐优先 使用 const 保证数据的安全性不会被随意的篡改
  4. 只有需要重复赋值的时候才使用 let

模板字符串

ES6允许我们使用字符串模板来嵌入JS的变量或者表达式来进行拼接,使用 ````符号来编写字符串,称之为模板字符串

可以在模板字符串的时候用 ${} 来嵌入动态内容


```js
const name = "hyc"
const age = 18
function foo(...args){
    console.log("111",args)
}
foo `my name is ${name},age is ${age},height is ${1.88}`
```

![image-20230402205907991](https://img-blog.csdnimg.cn/img_convert/3f4cc4a52300815fcee07a988f6ec415.png)



### 函数默认值

ES6 之后 函数允许给参数一个默认值

```js
   function test(x = 10, y = 10) 
```

可以使用这种方式来给函数的参数加入默认值,允许我们使用表达式比如

`x = 1 || x > 1`

### Symbol的基本使用

在ES6之前,对象的属性名都是字符串形式,那么很容易造成属性名的冲突

- 比如在新旧值同名的情况下混入 会有一个值被覆盖掉
- 比如之前有的fn 属性 如果新添加一个fn 属性 内部原有的fn 会怎么样?

Symbol就是为了解决上面的问题,用来生成一个独一无二的值。

1. Symbol值是通过Symbol函数来生成的,生成后可以作为属性名
2. 在ES6中,对象的属性名可以使用字符串,也可以使用Symbol值

```js
    const s1 = Symbol()
    const s2 = Symbol()
    const obj = {
        [s1]: "aaa",
        [s2]: "aaa"
    }

    // 获取 symbol 值 对应的key
    console.log(Object.getOwnPropertySymbols(obj));
```



### Set的基本使用

在ES6之前,我们存储数据的结构主要有两种:数组、对象。

在ES6中新增了另外两种数据结构:Set、Map,以及它们的另外形式WeakSet、WeakMap。Set 中数据是不能重复的 

> 常用方法

set 支持for of

 Set常见的属性:

* size:返回Set中元素的个数;

 Set常用的方法:

* add(value):添加某个元素,返回Set对象本身;
* delete(value):从set中删除和这个值相等的元素,返回boolean类型;
* has(value):判断set中是否存在某个元素,返回boolean类型;
* clear():清空set中所有的元素,没有返回值;
* forEach(callback, [, thisArg]):通过forEach遍历set;

```js
    // 创建 set 
    const set1 = new Set()
    set1.add(11)
    set1.add(12)
    set1.add(13)
    set1.add(11)
    console.log(set1.size);
```



### WeakSet使用

WeakSet和Set有什么区别

- WeakSet 不可以遍历
- WeakSet中只能存放对象类型,不能存放基本数据类型
- WeakSet对元素的引用是弱引用,如果没有其他引用对某个对象进行引用,那么GC可以对该对象进行回收;

```js
    let obj1 = { name: "why" }
    let obj2 = { name: "hyc" }
    const weakset = new WeakSet()
    weakset.add(obj1)
    weakset.add(obj2)
```

### Map基本使用

Map,用于存储映射关系

之前我们可以使用对象来存储映射关系,他们有什么区别

- 在之前的学习中对象存储映射关系只能用字符串(ES6新增了Symbol)作为属性名(key)
- 某些情况下我们可能希望通过其他类型作为key,比如对象,这个时候会自动将对象转成字符串来作为key;

这个时候就可以使用 map

```JS
    const info = { name: "hyc" }
    const map = new Map()
    map.set(info, "aaaa")
```

> Map的常用方法

Map常见的属性:

-  size:返回Map中元素的个数;

Map常见的方法:

- set(key, value):在Map中添加key、value,并且返回整个Map对象;
- get(key):根据key获取Map中的value;
- has(key):判断是否包括某一个key,返回Boolean类型;
- delete(key):根据key删除一个键值对,返回Boolean类型;
- clear():清空所有的元素;
- forEach(callback, [, thisArg]):通过forEach遍历Map;

### WeakMap的使用

WeakMap,也是以键值对的形式存在的。

WeakMap和 map 的区别

1. WeakMap的key只能使用对象,不接受其他的类型作为key;
2. WeakMap的key对对象想的引用是弱引用
3. WeakMap不能遍历 

WeakMap常见的方法有四个:

-  set(key, value):在Map中添加key、value,并且返回整个Map对象;
-  get(key):根据key获取Map中的value;
-  has(key):判断是否包括某一个key,返回Boolean类型;
-  delete(key):根据key删除一个键值对,返回Boolean类型;

### 拓展知识

#### 数值的表示

允许使用二进制 八进制来赋值

```js
const num1  = 100
const num2  = 0b100
```

ES2021 新增数字过长可以用 _ 来连接

```js
const num1 = 100_000_000
```


ECMAScript中文最新(ECMA262) ECMAScript2021中文最新,ECMAScript2021中文文档,第1-6章,持续更新,喜欢请star。git地址https://github.com/fangniyima/ECMAScript-notes 立即下载

相关推荐

12V转5V稳压电路详细分析(7805三端稳压,LM2596稳压)

7805线性三端稳压 DCDC的意思是直流变到直流(不同直流电源值的转换),只要符合这个定义都可以叫DCDC转换器,或称之为开关电源或开关调整器。 7805属于常用的线性三端稳压器,输入电压范围不大于35V,输入输出压差2V,最大输出电流1.5A,下图为原理图,其原理简单,使 用方便,深受很多用户的喜爱。但是其不足之处就是效率低,特别是压差越大时其效率越低。比如这里12V转5V的效率为 5V/12V≈41.7%。 如上电路是最经典的7805稳压5V电路,电路中有两个电容,电容的作用如下: ...

a2001444的博客 9万+

【译】ECMAScript文档---序言及1-6章(上)

前言   本系列译文的初衷旨在希望更多人能够了解关于JS的一些基本概念,遇到原理性的问题时多去翻翻文档,而不是在社区无休止的重复提出某些在文档中能够非常方便快捷就能找到的东西。   精力和水平有限,所以暂时只打算尝试翻译前面几章概括性的介绍,同时后面的章节大多都是步骤形式的伪代码或者实现流程,按照这些步骤一步一步推敲即可。比如,要查xxx...

weixin_34198453的博客 401

若依框架集成saToken

若依版本3.8.8,鉴权采用security框架,这种框架太重,项目中想实现对外提供接口功能。尽快减少修改原框架的逻辑基础上,采用satoken实现。

sccd2009的专栏 1482

2024 最新 ECMAScript 标准

ECMAScript 是由 ECMA International 通过 TC39(技术委员会39)进行标准化的脚本语言规范,它是 JavaScript 语言的基础。JavaScript 是 ECMAScript 规范的一个实现。下面是 ECMAScript 标准的一些核心组成部分:

肖哥弹架构博客 1550

最短线性递推式求解与有理函数重建

这一算法来自于我们对“线性递推式拟合”的视角转换,其后得到的算法是自然的。 引理 1. 如果两个有理分式 p1/q1,p2/q2p_1/q_1, p_2/q_2p1​/q1​,p2​/q2​ 均有 deg⁡p<n,deg⁡q≤n\deg p<n, \deg q\leq ndegp<n,degq≤n 且展开式 p1/q1≡p2/q2(modx2n)p_1/q_1 \equiv p_2/q_2 \pmod {x^{2n}}p1​/q1​≡p2​/q2​(modx2n),那么 p1/q1=p2/

Entropy Increaser 的博客 2589

[CARLA系列--01]CARLA 0.9.15 在Windows下的安装教程(一)

Carla是一款开源的自动驾驶仿真器,它基本可以用来帮助训练自动驾驶的所有模块,包括感知系统,Localization, 规划系统等等.Carla这个产品目前已经更新到了最新的0.9.15版本,目前遇到好多人在windows系统上如何安装可编辑版的Carla遇到了好多问题,所以针对在windows上的安装,推出此列教程.

汽车ECU自动化测试 4650

ES6~ES13新特性(一)

执行上下文栈**:Execution Context Stack,用于执行上下文的栈结构; - **执行上下文**:Execution Context,代码在执行之前会先创建对应的执行上下文; - **变量对象**:Variable Object,上下文关联的VO对象,用于记录函数和变量声明; - **全局对象**:Global Object,全局执行上下文关联的VO对象; - **激活对象**:Activation Object,函数执行上下文关联的VO对象; -

小余的前端博客 1099

实战分享:如何利用svchost进程绕过360防护(附完整Shellcode注入教程)

本文深入解析系统进程安全防护机制,探讨svchost等关键进程的安全特性与防护策略。详细分析安全软件的行为检测和内存保护技术,提供系统加固与监控实践建议,助力企业构建多层次防御体系,有效应对潜在安全威胁。

weixin_30752699的博客 99

Web前端最全ECMAScript 2024(ES10) 的新特性总结,前端开发规范文档

四轮技术面+一轮hr面结束,学习到了不少,面试也是一个学习检测自己的过程,面试前大概复习了 一周的时间,把以前的代码看了一下,字节跳动比较注重算法,面试前刷了下leetcode和剑指offer, 也刷了些在牛客网上的面经。大概就说这些了,写代码去了~祝大家都能收获大厂offer~开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】篇幅有限,仅展示部分内容String.trimStart()和String.trimEnd():去掉开头结尾空格文本。

2401_84435768的博客 1070

图神经网络实战——总结 | 图神经网络展望

短短数年时间,图神经网络 (Graph Neural Networks, GNN) 已经成为一种重要的深度学习架构,并且已经广泛应用于各个行业。通过本专栏的学习,能够对图学习和 GNN 领域有一个全面的了解,并能为各种应用设计、构建GNN模型。

盼小辉丶的博客 8518

基于GA-BP遗传算法优化神经网络的多输入多输出数据预测-Python代码实现

多输入多输出的GA-BP神经网络

2301_80449389的博客 2306

ECMAScript详细标准概述

ECMAScript(ECMA-262)是JavaScript语言的一个标准,由Ecma国际(前身为欧洲计算机制造商协会)通过标准化流程制定。ECMAScript详细标准描述了JavaScript语言的核心特性和行为,是JavaScript实现的基础。

2401_87352036的博客 1212

如何在 SAPGUI 里显示上传到 ABAP 服务器的 PDF 文件

在 SAPGUI 里显示 PDF 文件是实际项目中一个很有用的需求。因为在 SAP 实际业务场景中,有大量的流程会生成 PDF 格式的数据。把这种类型的数据输出显示在 SAPGUI 里,方便最终用户查看。本教程后续步骤,还会向大家介绍如何使用 ABAP 代码生成 PDF 格式的数据。本步骤只是简单的将本地 PDF 文件,上传到 ABAP 系统并显示在 SAPGUI 里。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2684

Python 高手编程系列三千零八十二:我做测试

OK常规的 TestCase 类和 doctests 也会被执行。最后,nose 提供了类似于 TestCase 方法的断言函数(assertion functions)。这些函数遵循 PEP 8 命名约定,而不是使用 Java 单元测试中的约定(参考 http://nose.readthedocs.org/)。编写测试固件nose 支持 3 个级别的测试固件。● 包级别:可以把 setup 和 teardown 函数添加到__init__.py 模块中,这是一。

2301_77888392的博客 969

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Python 高手编程系列三千二百八十二:我做测试

OK常规的 TestCase 类和 doctests 也会被执行。最后,nose 提供了类似于 TestCase 方法的断言函数(assertion functions)。这些函数遵循 PEP 8 命名约定,而不是使用 Java 单元测试中的约定(参考 http://nose.readthedocs.org/)。编写测试固件nose 支持 3 个级别的测试固件。● 包级别:可以把 setup 和 teardown 函数添加到__init__.py 模块中,这是一。

2301_77888392的博客 674

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python 高手编程系列三千零九十二:大 O 记法

但是通过求解一个简单的 100n2>5n3 不等式,我们可以发现,当 n 小于 20 时,程序 B。但最坏的情况是 O(n),例如,在第 2 章中已经讲过,在字典中查找的平均复杂度为 O(1)。常大的输入时,程序 A 当然是更好的选择,因为它的行为更好的渐近。少个元素,它被认为是常数,而在特定元素个数的列表中进行查找的时间复杂度是 O(n)。例如,看一个这样的操作,将一个元素追加到 Python 的列表类型的实例。为了获取算法的性能与输入数据的大小相关的概述,手动计算它的大 O 记法是最佳的。

2301_77888392的博客 432

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python 高手编程系列三千二百九十二:大 O 记法

但是通过求解一个简单的 100n2>5n3 不等式,我们可以发现,当 n 小于 20 时,程序 B。但最坏的情况是 O(n),例如,在第 2 章中已经讲过,在字典中查找的平均复杂度为 O(1)。常大的输入时,程序 A 当然是更好的选择,因为它的行为更好的渐近。少个元素,它被认为是常数,而在特定元素个数的列表中进行查找的时间复杂度是 O(n)。例如,看一个这样的操作,将一个元素追加到 Python 的列表类型的实例。为了获取算法的性能与输入数据的大小相关的概述,手动计算它的大 O 记法是最佳的。

2301_77888392的博客 437

Python 高手编程系列三千一百八十二:我做测试

OK常规的 TestCase 类和 doctests 也会被执行。最后,nose 提供了类似于 TestCase 方法的断言函数(assertion functions)。这些函数遵循 PEP 8 命名约定,而不是使用 Java 单元测试中的约定(参考 http://nose.readthedocs.org/)。编写测试固件nose 支持 3 个级别的测试固件。● 包级别:可以把 setup 和 teardown 函数添加到__init__.py 模块中,这是一。

2301_77888392的博客 575

一元初始 万象融合 - Google Cloud 2022 中国出海数字峰会回顾

1月20日,GoogleCloud2022中国出海数字峰会顺利举办。近三千位参会嘉宾一起问路未来,锚定技术,聚焦出海领域云端数字化创新,围绕业务场景以及Google Cloud...

谷歌开发者 374

Python 高手编程系列三千一百九十二:大 O 记法

但是通过求解一个简单的 100n2>5n3 不等式,我们可以发现,当 n 小于 20 时,程序 B。但最坏的情况是 O(n),例如,在第 2 章中已经讲过,在字典中查找的平均复杂度为 O(1)。常大的输入时,程序 A 当然是更好的选择,因为它的行为更好的渐近。少个元素,它被认为是常数,而在特定元素个数的列表中进行查找的时间复杂度是 O(n)。例如,看一个这样的操作,将一个元素追加到 Python 的列表类型的实例。为了获取算法的性能与输入数据的大小相关的概述,手动计算它的大 O 记法是最佳的。

2301_77888392的博客 240

中国互联网十年十大产品

传奇最成功的是《传奇》的运营奇迹。2001年一个叫作ActozSOFT的韩国公司来到上海,寻找网络游戏《传奇》运营商,经上海市动画协会推荐盛大公司,双方于6月29日签订授权协议,盛大用30万美元的入门费和27%的分成获得运营权。这个关于重建世界的大型在线角色扮演游戏迅速得到了玩家的追捧。从2001年11月底开始,《传奇》开始收费。出人意料的是,仅仅一个月,《传奇》的投资就已经完全收回。在不到一年的

武汉产品经理 1428

微信拍一拍,每天赚一顿早饭钱?

微信拍一拍这功能推出有一个多月了,在 6 月 18 日我整理了篇介绍微信拍一拍趣味玩法的文章,顺带着做了个辅助生成拍一拍文字的小程序: 小程序入口 当时也在考虑这个拍一拍究竟之后会衍生出什么新的功能。没想到后续 iOS 最新版微信率先在个人设置页推出了拍一拍的设置选项,部分手机型号的安卓版本目前也可以使用,仍有部分安卓版还没能实现设置: 现在过去这么久,我仍没琢磨明白拍一拍的价值在哪,但没想到上面做出来的小程序却实实在在每天给我带来了利益价值! 收益图片 从 6 月 18 小程序正式上线,到 6 月 2

TEDxPY 1003

毕业八年小结

前几天在现在的公司工作满五周年了,想想还蛮意外的,意外在于,没有想到在一家公司居然会呆上五年之久。在我之前的头脑中,在一家公司呆两年是比较合适的,也许一...

轩脉刃的刀光剑影 386

SEO完全手册之关键词选取

上节回顾 上一节我们主要和大家讨论了网页title的优化、布局等,通过上一节的讨论,我们一起了解了SEO中最重要的title部分的优化。 上节链接:http://blog.youkuaiyun.com/diehuan2008/archive/2009/02/23/3925204.aspx 在SEO的过程中,对于一个网页的关键词选取和元标签META的写法是非常重要的。...

saybody 230

【历史上的今天】8 月 15 日:苹果推出初代 iMac;谷歌收购摩托罗拉移动;Fuchsia 首次发布

字母“i”的含义包括“互联网”(Internet)、“个人”(Individual)、“指导”(Instruct)、“信息”(Inform)以及“启发”(Inspire),在 1998 年 iMac 的发布会上,乔布斯对此作了介绍。

历史上的今天 9197
上一篇: 字节青训营 浅尝Type Script
下一篇: sql小技巧:日期区间和格式化操作
冷环渊
博客等级 码龄7年 1130粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷环渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值