当前位置: 首页 > news >正文

ES6:基础使用,积累

一、理解ES6

ES6是ECMAScript 6.0的简称,也被称为ES2015。它是ECMAScript的第六个版本,是JavaScript标准的下一个重大更新。ES6于2015年6月发布,新增了许多新的语言特性和API,包括箭头函数、let和const关键字、模板字符串、解构赋值、展开运算符、类、模块化等等。ES6的新增特性让JavaScript语言更加强大和灵活,同时也让开发者编写代码更加的简便和高效。因此,学习和掌握ES6对于提高JavaScript编程能力和开发效率是非常重要的。

二、理解ECMAScript

JavaScript 是大家所了解的语言名称,但是这个语言名称是商标( Oracle 公司注册的商标)。因此,JavaScript 的正式名称是 ECMAScript 。1996年11月,JavaScript 的创造者网景公司将 JS 提交给国际化标准组织 ECMA(European computer manufactures association,欧洲计算机制造联合会),希望这种语言能够成为国际标准,随后 ECMA 发布了规定浏览器脚本语言的标准,即 ECMAScript。这也有利于这门语言的开放和中立。

三、浏览器可以直接使用ES6语法吗?

大部分现代浏览器已经支持ES6语法,但是一些旧版本的浏览器可能不支持或只支持部分ES6语法特性。为了确保兼容性,您可以使用Babel等工具将ES6代码转换为ES5代码,以便在旧版本的浏览器上运行。

四、ES6环境搭建,步骤

1、安装 Node.js:ES6 是在 Node.js 环境下运行的,因此需要先安装 Node.js。可以从官网下载对应平台的 Node.js 安装包进行安装。

2、安装 Babel:Babel 可以将 ES6 的代码转换成浏览器或者 Node.js 理解的代码,因此需要安装 Babel。可以使用以下命令进行安装:

npm install --save-dev @babel/core @babel/cli @babel/preset-env

 3、 创建 Babel 配置文件:在项目的根目录下创建一个名为 .babelrc 的文件,并添加以下内容:

{"presets": ["@babel/preset-env"]
}

4、创建项目目录结构:创建一个名为 src 的文件夹,在其中添加一个名为 index.js 的文件,用于存放 ES6 代码。

5、编写 ES6 代码:在 index.js 文件中编写 ES6 代码。

6、使用 Babel 转换代码:在命令行中使用以下命令将 ES6 代码转换为浏览器或者 Node.js 可以理解的代码:

npx babel src --out-dir dist

其中,src 表示源代码目录,dist 表示编译后的代码目录。

在浏览器或者 Node.js 中运行编译后的代码:将编译后的代码复制到浏览器或者 Node.js 中运行即可。

ES6 教程 | 菜鸟教程

webpack打包转换es6_Webpack 杂篇_Airbnb爱彼迎的博客-CSDN博客

五、声明与表达式

序号声明表达式
1let 与 const let命令基本用法
2代码块内有效
3不能重复声明
4迭代计数使用
5无变量提升
6const命令基本用法
7暂时性死区
8注意要点
9解构赋值概述ES6 的解构赋值是一种快速方便地从数组或对象中提取数据并赋值给变量的语法。它可以让我们将复杂数据结构拆解成简单的变量。
10数组模型的结构

let [a, b, c] = [1, 2, 3];
let [a, b, c = 4] = [1, 2];

11对象模型的结构

let {name, age} = {name: 'Tom', age: 20};


let {name = 'Tom', age = 20} = {name: 'Jack'};


let {name, age, scores: [math, english]} = {name: 'Tom', age: 20, scores: [80, 90]};

12注意要点
13常见用法
14Symbol概述ES6 中新增了一种基本数据类型:Symbol。它是一种原始数据类型,用于表示独一无二的值,可以用来作为对象的属性名。
15基本用法

// 定义一个Symbol值
let s = Symbol();
console.log(s); // 输出:Symbol()

// 同一个文本描述的Symbol值是不同的
let s1 = Symbol('foo');
let s2 = Symbol('foo');


console.log(s1 === s2); // 输出:false

Symbol内置的 Symbol 值在一些新的语言特性(如 for...of 循环、async/await)中有广泛应用。

16使用场景

作为属性名

// Symbol 值可以作为对象属性名使用

let obj = {};
let s = Symbol();
obj[s] = 'value';
console.log(obj[s]); // 输出:valu

17定义常量
18Symbol.for()

Symbol.for()是一个静态方法,可以创建并访问全局共享的symbol。当调用Symbol.for()时,会检查全局symbol注册表中是否已经存在具有给定键(字符串)的symbol。如果存在,则直接返回该symbol。如果不存在,则创建一个具有给定键并添加到全局注册表中的新symbol,然后返回该symbol。

const key1 = Symbol.for('myKey');
const key2 = Symbol.for('myKey');

console.log(key1 === key2); // true
 

在这个例子中,我们使用相同的键('myKey')两次调用Symbol.for()。第一次调用创建了一个新的具有该键的symbol,并将其添加到全局注册表中,而第二次调用则直接返回之前创建的同一个symbol。因此,key1和key2相等,console.log语句的输出为true。

当需要创建全局共享的symbol或在代码的不同部分访问已经创建的symbol时,Symbol.for()会非常有用。

19Symbol.keyFor()ES6 的 Symbol.keyFor() 方法返回一个已注册的 Symbol 类型值的字符串键。它接受一个Symbol类型值作为参数,并在全局 Symbol 注册表中搜索该值,如果找到则返回该 Symbol 对应的键值(即字符串),否则返回 undefined。这个方法与 Symbol.for() 相反,该方法是通过已知符号返回符号的键,而 Symbol.for() 则是通过键返回符号。使用 Symbol.keyFor() 方法可以方便的找到一个 Symbol 对应的键,这在代码维护和调试时非常有用。
20Symbol.iterator()用来表示一个对象是否可迭代
21Symbol.asyncIterator()用来表示一个对象是否可异步迭代

六、内置对象

序号内置对象
1新增Map与SetMap对象Map中的Key
2Map迭代
3Map对象的操作
4Set对象类型转换
5Set对象的作用
6Map与Set对象属性与方法
7

Proxy与Reflect

概述
8基本用法Proxy
9Reflect
10组合使用
11使用场景拓展
12拓展字符串拓展的方法子串的识别
13字符串重复
14字符串补全
15模板字符串基本用法
16注意要点
17标签模板
18数值数值的表示
19常量
20方法
21Math对象的拓展
22对象对象字面量
23对象的拓展运算符
24对象的新方法assign
25is
26数组数组的创建1、Array.of() // 将参数中所有值作为元素形成数组
2、Array.from() // 将类数组对象或可迭代对象转化为数组
3、转换map
4、转化set
5、转换字符串
27拓展的方法

1、find() // 查找数组中符合条件的元素,返回第一个
2、findIndex() // 查找数组中符合条件的第一个元素的索引
3、fill() // 填充,将一定范围索引的数组元素内容填充为单个指定的值
3、copyWithin // 将一定范围索引的数组元素修改为此数组另一指定范围索引的元素
4、entries // 遍历键值对
5、keys // 遍历键名
6、values // 遍历键值
7、includes // 数组是否包含指定值
8、flat // 嵌套数组转唯一数组
9、flatMap // 先对数组中每个元素进行了的处理,再对数组执行 flat() 方法

28数组缓冲区1、数组缓冲区是内存中的一段地址
2、定型数组的基础
3、实际字节数在创建时确定,之后只可修改其中的数据,不可修改大小
4、可以通过构造函数创建数组缓冲区
29定型数组1、数组缓冲区的特定类型的视图
2、可以强制使用特定的数据类型,而不是使用通用的 DataView 对象来操作数组缓冲区
30拓展运算符let arr = [1, 2]
arr1 = [...arr]
console.log(arr1) // [1, 2]

七、运算符与语句

序号运算符与语句
1函数函数参数的拓展默认参数
2不定参数
3箭头函数基本用法
4注意要点
5适合使用的场景
6不适合使用的场景
7迭代器iterator迭代过程
8可迭代的数据结构
9普通对象不可迭代
10for ... of 循环迭代常规数据类型
11可迭代的数据结构
12let、const、和var用于for ... of
13class类概述
14基本用法类定义
15类的主体
16类的实例化
17decorator类装饰
18方法修饰
19封装与继承get/setter
20extends
21super
22注意要点
23模块概述
24特点
25export 与 import基本用法
26as的用法
27import 命令的特点
28export default命令
29复合使用

八、异步编程

异步编程

1

Promise

ES6:promise简单学习_snow@li的博客-CSDN博客

概述
2Promise状态特点
3缺点
4then方法特点
5注意点
6Generator基本用法函数组成
7执行机制
8返回的方法
9yield表达式
10使用场景
11asyncasync语法
12返回值
13await语法
14返回值
15错误处理
16注意要点
17实例

九、实践

十、过程记录

十一、欢迎交流指正,关注我,一起学习

十二参考链接

ES6:flat()_es6 flat_snow@li的博客-CSDN博客

ES6:promise简单学习_snow@li的博客-CSDN博客

百度安全验证

https://www.cnblogs.com/anding/p/16890716.html

Object.assign详解_guxin_duyin的博客-CSDN博客

1.1 ES6 教程 | 菜鸟教程 (runoob.com)

JS数组reduce()方法详解及高级技巧 - 简书

es6新特性有哪些-常见问题-PHP中文网

一文告诉你es6新特性有哪些 - 动力节点

ES 6 新特性汇总(一图全览) - 知乎

最全的—— ES6有哪些新特性?_admin_zlj的博客-CSDN博客_es6新特性

相关文章:

ES6:基础使用,积累

一、理解ES6 ES6是ECMAScript 6.0的简称,也被称为ES2015。它是ECMAScript的第六个版本,是JavaScript标准的下一个重大更新。ES6于2015年6月发布,新增了许多新的语言特性和API,包括箭头函数、let和const关键字、模板字符串、解构赋…...

Android端上传文件到Spring Boot后端

准备 确定好服务器端文件保存的位置确定好请求参数名&#xff08;前后端要保持一致的喔&#xff09;如果手机是通过usb连接到电脑的&#xff0c;需要执行一下&#xff1a; adb reverse tcp:8080 tcp:8080 AndroidManifest.xml的<application/>节点中加上: android:usesC…...

使用GGML和LangChain在CPU上运行量化的llama2

Meta AI 在本周二发布了最新一代开源大模型 Llama 2。对比于今年 2 月发布的 Llama 1&#xff0c;训练所用的 token 翻了一倍&#xff0c;已经达到了 2 万亿&#xff0c;对于使用大模型最重要的上下文长度限制&#xff0c;Llama 2 也翻了一倍。 在本文&#xff0c;我们将紧跟趋…...

微服务基础理论

微服务简介 微服务Microservices之父&#xff0c;马丁.福勒&#xff0c;对微服务大概的概述如下&#xff1a; 就目前而言&#xff0c;对于微服务业界并没有一个统一的、标准的定义&#xff08;While there is no precise definition of this architectural style ) 。但通在其…...

《向量数据库指南》:向量数据库Pinecone管理数据教程

目录 连接到索引 指定索引端点 调用whoami以检索您的项目名称。 描述索引统计信息 获取向量 更新向量 完整更新 ℹ️注意 部分更新 ⚠️注意 ℹ️注意 删除向量...

以深度为基础的Scikit-learn: 高级特性与最佳实践

Scikit-learn是一个广受欢迎的Python库&#xff0c;它用于解决许多机器学习的问题。在本篇文章中&#xff0c;我们将进一步探索Scikit-learn的高级特性和最佳实践。 一、管道机制 Scikit-learn的Pipeline类是一种方便的工具&#xff0c;它允许你将多个步骤&#xff08;如数据…...

Autosar MCAL-S32K324Dio配置-基于EB

文章目录 DioPost Build Variant UsedConfig VariantDioConfigDioPortDioChannelDioChannelGroupDioConfigDio Development Error DetectSIUL2 IP Dio Development Error DetectDio Version Info ApiDio Reverse Port BitsDio Flip Channel ApiDio Rea...

【Spring Boot】单元测试

单元测试 单元测试在日常项目开发中必不可少&#xff0c;Spring Boot提供了完善的单元测试框架和工具用于测试开发的应用。接下来介绍Spring Boot为单元测试提供了哪些支持&#xff0c;以及如何在Spring Boot项目中进行单元测试。 1.Spring Boot集成单元测试 单元测试主要用…...

Flink CEP (一)原理及概念

目录 1.Flink CEP 原理 2.Flink API开发 2.1 模式 pattern 2.2 模式 pattern属性 2.3 模式间的关系 1.Flink CEP 原理 Flink CEP内部是用NFA&#xff08;非确定有限自动机&#xff09;来实现的&#xff0c;由点和边组成的一个状态图&#xff0c;以一个初始状态作为起点&am…...

vue3+taro+Nutui 开发小程序(二)

上一篇我们初始化了小程序项目&#xff0c;这一篇我们来整理一下框架 首先可以看到我的项目整理框架是这样的&#xff1a; components:这里存放封装的组件 custom-tab-bar:这里存放自己封装的自定义tabbar interface&#xff1a;这里放置了Ts的一些基本泛型&#xff0c;不用…...

Transformer 模型实用介绍:BERT

动动发财的小手&#xff0c;点个赞吧&#xff01; 在 NLP 中&#xff0c;Transformer 模型架构是一场革命&#xff0c;极大地增强了理解和生成文本信息的能力。 在本教程[1]中&#xff0c;我们将深入研究 BERT&#xff08;一种著名的基于 Transformer 的模型&#xff09;&#…...

Spring详解(学习总结)

目录 一、Spring概述 &#xff08;一&#xff09;、Spring是什么&#xff1f; &#xff08;二&#xff09;、Spring框架发展历程 &#xff08;三&#xff09;、Spring框架的优势 &#xff08;四&#xff09;、Spring的体系结构 二、程序耦合与解耦合 &#xff08;一&…...

【JavaEE】Spring中注解的方式去获取Bean对象

【JavaEE】Spring的开发要点总结&#xff08;3&#xff09; 文章目录 【JavaEE】Spring的开发要点总结&#xff08;3&#xff09;1. 属性注入1.1 Autowired注解1.2 依赖查找 VS 依赖注入1.3 配合Qualifier 筛选Bean对象1.4 属性注入的优缺点 2. Setter注入2.1 Autowired注解2.2…...

【基于CentOS 7 的iscsi服务】

目录 一、概述 1.简述 2.作用 3. iscsi 4.相关名称 二、使用步骤 - 构建iscsi服务 1.使用targetcli工具进入到iscsi服务器端管理界面 2.实现步骤 2.1 服务器端 2.2 客户端 2.2.1 安装软件 2.2.2 在认证文件中生成iqn编号 2.2.3 开启客户端服务 2.2.4 查找可用的i…...

解决安装依赖时报错:npm ERR! code ERESOLVE

系列文章目录 文章目录 系列文章目录前言一、错误原因二、解决方法三、注意事项总结 前言 在使用 npm 安装项目依赖时&#xff0c;有时会遇到错误信息 “npm ERR! code ERESOLVE”&#xff0c;该错误通常发生在依赖版本冲突或者依赖解析问题时。本文将详细介绍出现这个错误的原…...

98、简述Kafka的rebalance机制

简述Kafka的rebalance机制 consumer group中的消费者与topic下的partion重新匹配的过程 何时会产生rebalance: consumer group中的成员个数发生变化consumer 消费超时group订阅的topic个数发生变化group订阅的topic的分区数发生变化 coordinator: 通常是partition的leader节…...

【人工智能】监督学习、分类问题、决策树、信息增益

文章目录 Decision Trees 决策树建立决策树分类模型的流程如何建立决策树?决策树学习表达能力决策树学习信息论在决策树学习中的应用特征选择准则一:信息增益举例结论不足回到餐厅的例子从12个例子中学到的决策树:Decision Trees 决策树 什么是决策树 —— 基本概念 非叶节…...

Pytorch迁移学习使用Resnet50进行模型训练预测猫狗二分类

目录 1.ResNet残差网络 1.1 ResNet定义 1.2 ResNet 几种网络配置 1.3 ResNet50网络结构 1.3.1 前几层卷积和池化 1.3.2 残差块&#xff1a;构建深度残差网络 1.3.3 ResNet主体&#xff1a;堆叠多个残差块 1.4 迁移学习猫狗二分类实战 1.4.1 迁移学习 1.4.2 模型训练 1.…...

HTML与XHTML的不同和各自特点

HTML和XHTML都是用于创建Web页面的标记语言。HTML是一种被广泛使用的标记语言&#xff0c;而XHTML是HTML的严格规范化版本。在本文中&#xff0c;我们将探讨HTML与XHTML之间的不同之处&#xff0c;以及它们各自的特点。 HTML与XHTML的不同之处 HTML和XHTML之间最大的不同在于它…...

微服务如何治理

微服务远程调用可能有如下问题&#xff1a; 注册中心宕机&#xff1b; 服务提供者B有节点宕机&#xff1b; 服务消费者A和注册中心之间的网络不通&#xff1b; 服务提供者B和注册中心之间的网络不通&#xff1b; 服务消费者A和服务提供者B之间的网络不通&#xff1b; 服务提供者…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...