ES6

一、什么是ES6

JavaScript 是一门弱类型编程语言,声明变量时比较不严谨,简称JS。ES6(ECMAScript 2015)的新特性极大提升了JavaScript的开发效率、可执行性和可维护性,解决了许多之前版本中存在的问题,并为现代应用的开发提供了更多工具。

二、新特性

1. 声明变量

ES5使用var声明,比较自由,ES6使用let声明,比较严谨、合理。

优点:1、不允许先声明后使用。2、不允许重复声明变量。3、可以产生块级作用域。

使用let 关键字声明变量,它是 JavaScript 中用于声明变量的一种方式。与 var 关键字不同,let 具有块级作用域,这意味着使用 let 声明的变量只能在其所在的代码块内访问。这可以帮助避免变量提升和作用域污染的问题。

2. 声明常量

使用const 关键字声明常量,它是 JavaScript 中用于声明常量的一种方式。与 let 和 var 不同,使用 const 声明的变量必须在声明时初始化,并且在后续的代码中不能被重新赋值。

3. 模版字符串

模板字符串是ES6 引入的一种字符串表示法,它使用反引号 (`) 来创建字符串,支持多行文本和内嵌表达式。模板字符串使得字符串的拼接和格式化更加简洁和方便。

4. 解构赋值

解构赋值是ES6 引入的一种语法,可以从数组或对象中提取值,并将其赋值给变量。这种语法使得提取属性和元素变得更加简洁和直观。形式:修饰关键字 变量 = 值,隐式变量 = 值

5. 对象语法糖

当你在创建对象时,如果对象的属性名与变量名相同,可以直接使用变量名,而不需要重复写属性名。

6. 箭头函数

它们提供了一种更简洁的方式来定义函数,同时也改变了this 的绑定方式。简单的说就是使用 “()=”代替了“function()”。

7. 拓展运算符

使用三个点(...)表示,可以用于数组和对象的展开。它可以将数组或对象的元素展开为单独的元素,或将多个元素合并成一个新的数组或对象。作用:1. 复制数据集合中的数据,2. 展开集合中的数据,3. 处理剩余参数。

8. 字符串、数组新增API

startsWith("a"):判断是否以a开头
endsWith("a"):判断是否以a结束
includes("a"):判断是否包含a

使用forEach((item,index)循环数组中的值和索引,


使用map((item)映射数组,


使用filter((item)过滤不需要的数据,


使用reduce() 做累计计算。

9. Set和Map 

9.1 Set

Set 是一种集合,允许存储唯一值的有序集合。它的特点是:
唯一性:集合中的每个值都是唯一的。
无序性:集合中的值没有特定的顺序。

添加元素:add(),删除元素:deleted(),检查元素:has(),清空元素:clear()

9.2 Map       

Map 是一种键值对的集合,允许使用任意类型的值作为键。它的特点是:
有序性:元素是有序的,插入的顺序会被保持。
灵活的键:键可以是任何类型,包括对象。

添加元素:set(),获取元素:get(),删除元素:deleted()

         

10. Proxy和Reflect

10.1 Proxy

Proxy 是 ES6 引入的一种强大特性,允许你创建一个对象的代理,以拦截并自定义基本操作(如属性查找、赋值、枚举、函数调用等)。这使得你可以在不修改原始对象的情况下,为对象添加额外的功能。
get(target, property, receiver): 拦截对属性的读取操作。                                    
set(target, property, value, receiver): 拦截对属性的赋值操作。
deleteProperty(target, property): 拦截对属性的删除操作。                    
apply(target, thisArg, argumentsList): 拦截函数调用。                                
has(target, property): 拦截 in 操作符的使用。

10.2 Reflect

Reflect 是  ES6 引入的一个内置对象,它提供了一组方法,用于操作和拦截对象的基本操作。Reflect 的方法与 Proxy 中的拦截器方法相对应,使得在使用代理时,更加清晰和简洁。
Reflect.get(target, property, receiver): 获取对象属性的值。
Reflect.set(target, property, value, receiver): 设置对象属性的值。
Reflect.deleteProperty(target, property): 删除对象的属性。
Reflect.has(target, property): 判断对象是否具有指定的属性。Reflect.getOwnPropertyDescriptor(target, property): 获取对象属性的描述符。Reflect.defineProperty(target, property, descriptor): 定义对象的属性描述符。Reflect.ownKeys(target): 返回对象自身的所有属性名称(包括字符串和符号)。

11. async和await

async 用于简化基于 Promise 的异步编程。使用 async 和 await 关键字,可以更清晰地编写异步代码,使其看起来像同步代码。

12. 类class

class 是 ES6 引入的一种语法,用于定义对象的构造函数和原型。类提供了一种更清晰和简洁的方式来创建对象和处理继承。以下是关于 JavaScript 类的详细介绍。

13. 模块化

模块化是编程的一种设计理念,旨在将代码分割成独立的、可重用的模块,从而提高代码的可维护性和可读性。

13.1 按需导入

13.2 全部导入

13.3  可修改模块名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值