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博客
五、声明与表达式
| 序号 | 声明表达式 | ||
| 1 | let 与 const | let命令 | 基本用法 |
| 2 | 代码块内有效 | ||
| 3 | 不能重复声明 | ||
| 4 | 迭代计数使用 | ||
| 5 | 无变量提升 | ||
| 6 | const命令 | 基本用法 | |
| 7 | 暂时性死区 | ||
| 8 | 注意要点 | ||
| 9 | 解构赋值 | 概述 | ES6 的解构赋值是一种快速方便地从数组或对象中提取数据并赋值给变量的语法。它可以让我们将复杂数据结构拆解成简单的变量。 |
| 10 | 数组模型的结构 | let [a, b, c] = [1, 2, 3]; | |
| 11 | 对象模型的结构 | let {name, age} = {name: 'Tom', age: 20};
| |
| 12 | 注意要点 | ||
| 13 | 常见用法 | ||
| 14 | Symbol | 概述 | ES6 中新增了一种基本数据类型:Symbol。它是一种原始数据类型,用于表示独一无二的值,可以用来作为对象的属性名。 |
| 15 | 基本用法 | // 定义一个Symbol值 // 同一个文本描述的Symbol值是不同的
Symbol内置的 Symbol 值在一些新的语言特性(如 for...of 循环、async/await)中有广泛应用。 | |
| 16 | 使用场景 | 作为属性名 // Symbol 值可以作为对象属性名使用 let obj = {}; | |
| 17 | 定义常量 | ||
| 18 | Symbol.for() | Symbol.for()是一个静态方法,可以创建并访问全局共享的symbol。当调用Symbol.for()时,会检查全局symbol注册表中是否已经存在具有给定键(字符串)的symbol。如果存在,则直接返回该symbol。如果不存在,则创建一个具有给定键并添加到全局注册表中的新symbol,然后返回该symbol。 const key1 = Symbol.for('myKey'); console.log(key1 === key2); // true 在这个例子中,我们使用相同的键('myKey')两次调用Symbol.for()。第一次调用创建了一个新的具有该键的symbol,并将其添加到全局注册表中,而第二次调用则直接返回之前创建的同一个symbol。因此,key1和key2相等,console.log语句的输出为true。 当需要创建全局共享的symbol或在代码的不同部分访问已经创建的symbol时,Symbol.for()会非常有用。 | |
| 19 | Symbol.keyFor() | ES6 的 Symbol.keyFor() 方法返回一个已注册的 Symbol 类型值的字符串键。它接受一个Symbol类型值作为参数,并在全局 Symbol 注册表中搜索该值,如果找到则返回该 Symbol 对应的键值(即字符串),否则返回 undefined。这个方法与 Symbol.for() 相反,该方法是通过已知符号返回符号的键,而 Symbol.for() 则是通过键返回符号。使用 Symbol.keyFor() 方法可以方便的找到一个 Symbol 对应的键,这在代码维护和调试时非常有用。 | |
| 20 | Symbol.iterator() | 用来表示一个对象是否可迭代 | |
| 21 | Symbol.asyncIterator() | 用来表示一个对象是否可异步迭代 | |
六、内置对象
| 序号 | 内置对象 | |||
| 1 | 新增 | Map与Set | Map对象 | Map中的Key |
| 2 | Map迭代 | |||
| 3 | Map对象的操作 | |||
| 4 | Set对象 | 类型转换 | ||
| 5 | Set对象的作用 | |||
| 6 | Map与Set对象属性与方法 | |||
| 7 | Proxy与Reflect | 概述 | ||
| 8 | 基本用法 | Proxy | ||
| 9 | Reflect | |||
| 10 | 组合使用 | |||
| 11 | 使用场景拓展 | |||
| 12 | 拓展 | 字符串 | 拓展的方法 | 子串的识别 |
| 13 | 字符串重复 | |||
| 14 | 字符串补全 | |||
| 15 | 模板字符串 | 基本用法 | ||
| 16 | 注意要点 | |||
| 17 | 标签模板 | |||
| 18 | 数值 | 数值的表示 | ||
| 19 | 常量 | |||
| 20 | 方法 | |||
| 21 | Math对象的拓展 | |||
| 22 | 对象 | 对象字面量 | ||
| 23 | 对象的拓展运算符 | |||
| 24 | 对象的新方法 | assign | ||
| 25 | is | |||
| 26 | 数组 | 数组的创建 | 1、Array.of() // 将参数中所有值作为元素形成数组 2、Array.from() // 将类数组对象或可迭代对象转化为数组 3、转换map 4、转化set 5、转换字符串 | |
| 27 | 拓展的方法 | 1、find() // 查找数组中符合条件的元素,返回第一个 | ||
| 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 | 普通对象不可迭代 | ||
| 10 | for ... of 循环 | 迭代常规数据类型 | |
| 11 | 可迭代的数据结构 | ||
| 12 | let、const、和var用于for ... of | ||
| 13 | class类 | 概述 | |
| 14 | 基本用法 | 类定义 | |
| 15 | 类的主体 | ||
| 16 | 类的实例化 | ||
| 17 | decorator | 类装饰 | |
| 18 | 方法修饰 | ||
| 19 | 封装与继承 | get/setter | |
| 20 | extends | ||
| 21 | super | ||
| 22 | 注意要点 | ||
| 23 | 模块 | 概述 | |
| 24 | 特点 | ||
| 25 | export 与 import | 基本用法 | |
| 26 | as的用法 | ||
| 27 | import 命令的特点 | ||
| 28 | export default命令 | ||
| 29 | 复合使用 | ||
八、异步编程
| 异步编程 | |||
| 1 | Promise ES6:promise简单学习_snow@li的博客-CSDN博客 | 概述 | |
| 2 | Promise状态 | 特点 | |
| 3 | 缺点 | ||
| 4 | then方法 | 特点 | |
| 5 | 注意点 | ||
| 6 | Generator | 基本用法 | 函数组成 |
| 7 | 执行机制 | ||
| 8 | 返回的方法 | ||
| 9 | yield表达式 | ||
| 10 | 使用场景 | ||
| 11 | async | async | 语法 |
| 12 | 返回值 | ||
| 13 | await | 语法 | |
| 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后端
准备 确定好服务器端文件保存的位置确定好请求参数名(前后端要保持一致的喔)如果手机是通过usb连接到电脑的,需要执行一下: adb reverse tcp:8080 tcp:8080 AndroidManifest.xml的<application/>节点中加上: android:usesC…...
使用GGML和LangChain在CPU上运行量化的llama2
Meta AI 在本周二发布了最新一代开源大模型 Llama 2。对比于今年 2 月发布的 Llama 1,训练所用的 token 翻了一倍,已经达到了 2 万亿,对于使用大模型最重要的上下文长度限制,Llama 2 也翻了一倍。 在本文,我们将紧跟趋…...
微服务基础理论
微服务简介 微服务Microservices之父,马丁.福勒,对微服务大概的概述如下: 就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style ) 。但通在其…...
《向量数据库指南》:向量数据库Pinecone管理数据教程
目录 连接到索引 指定索引端点 调用whoami以检索您的项目名称。 描述索引统计信息 获取向量 更新向量 完整更新 ℹ️注意 部分更新 ⚠️注意 ℹ️注意 删除向量...
以深度为基础的Scikit-learn: 高级特性与最佳实践
Scikit-learn是一个广受欢迎的Python库,它用于解决许多机器学习的问题。在本篇文章中,我们将进一步探索Scikit-learn的高级特性和最佳实践。 一、管道机制 Scikit-learn的Pipeline类是一种方便的工具,它允许你将多个步骤(如数据…...
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】单元测试
单元测试 单元测试在日常项目开发中必不可少,Spring Boot提供了完善的单元测试框架和工具用于测试开发的应用。接下来介绍Spring Boot为单元测试提供了哪些支持,以及如何在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(非确定有限自动机)来实现的,由点和边组成的一个状态图,以一个初始状态作为起点&am…...
vue3+taro+Nutui 开发小程序(二)
上一篇我们初始化了小程序项目,这一篇我们来整理一下框架 首先可以看到我的项目整理框架是这样的: components:这里存放封装的组件 custom-tab-bar:这里存放自己封装的自定义tabbar interface:这里放置了Ts的一些基本泛型,不用…...
Transformer 模型实用介绍:BERT
动动发财的小手,点个赞吧! 在 NLP 中,Transformer 模型架构是一场革命,极大地增强了理解和生成文本信息的能力。 在本教程[1]中,我们将深入研究 BERT(一种著名的基于 Transformer 的模型)&#…...
Spring详解(学习总结)
目录 一、Spring概述 (一)、Spring是什么? (二)、Spring框架发展历程 (三)、Spring框架的优势 (四)、Spring的体系结构 二、程序耦合与解耦合 (一&…...
【JavaEE】Spring中注解的方式去获取Bean对象
【JavaEE】Spring的开发要点总结(3) 文章目录 【JavaEE】Spring的开发要点总结(3)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 安装项目依赖时,有时会遇到错误信息 “npm ERR! code ERESOLVE”,该错误通常发生在依赖版本冲突或者依赖解析问题时。本文将详细介绍出现这个错误的原…...
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 残差块:构建深度残差网络 1.3.3 ResNet主体:堆叠多个残差块 1.4 迁移学习猫狗二分类实战 1.4.1 迁移学习 1.4.2 模型训练 1.…...
HTML与XHTML的不同和各自特点
HTML和XHTML都是用于创建Web页面的标记语言。HTML是一种被广泛使用的标记语言,而XHTML是HTML的严格规范化版本。在本文中,我们将探讨HTML与XHTML之间的不同之处,以及它们各自的特点。 HTML与XHTML的不同之处 HTML和XHTML之间最大的不同在于它…...
微服务如何治理
微服务远程调用可能有如下问题: 注册中心宕机; 服务提供者B有节点宕机; 服务消费者A和注册中心之间的网络不通; 服务提供者B和注册中心之间的网络不通; 服务消费者A和服务提供者B之间的网络不通; 服务提供者…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
