ES6
- 1、新增声明命令let和const
- 2、模板字符串
- 3、箭头函数
- 4、剩余参数
- 5、Object.keys()、Object.assign()
- 6、for...of 循环
- 7、import和export
- 8、Promise对象
- 9、解构赋值
- 10、Set数据结构
- 11、class
- 12、async、await
- 13、修饰器
- 14、Symbol
- 15、Proxy
简介:ES:全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。
ES6好处:
1、新增声明命令let和const
-
声明变量let
• let关键字就是用来声明变量的 • 使用let关键字声明的变量具有块级作用域(一对大括号 { } 产生的作用域) • 在一个大括号中 使用let关键字声明的变量才具有块级作用域 var关键字是不具备这个特点的 • 防止循环变量变成全局变量 • 使用let关键字声明的变量没有变量提升 • 使用let关键字声明的变量具有暂时性死区特性
-
声明常量const
• const声明的变量是一个常量 • 既然是常量不能重新进行赋值,如果是基本数据类型,不能更改值,如果是复杂数据类型,不能更改地址值 • 声明 const时候必须要给定值(赋值) • 具有块级作用域
-
let const var 区别
2、模板字符串
用一对反引号``标识,可以当作普通字符串使用,也可以用来定义多行字符串,也可以在字符串中嵌入变量、js表达式或函数。
3、箭头函数
( 形参 ) => { 函数体 } (匿名函数、简化函数定义语法)
- 箭头函数中不绑定this,箭头函数中的this指向是它所定义的位置,可以简单理解成,定义箭头函数中的作用域的this指向谁,它就指向谁
- 箭头函数的优点在于解决了this执行环境所造成的一些问题。比如:解决了匿名函数this指向的问题(匿名函数的执行环境具有全局性),包括setTimeout和setInterval中使用this所造成的问题
注意:
• 函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号
function sum(num1, num2) {
return num1 + num2;
}
//es6写法
const sum = (num1, num2) => num1 + num2;
• 如果形参只有一个,可以省略小括号
function fn(v) {
return v;
}
//es6写法
const fn = v => v;
• 箭头函数不绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this (thia指向window)
• 箭头函数不能使用arguments,但可以使用剩余参数…args
let arg = (...args) => {
console.log(args);
}
arg(1, 2, 3);//结果为 [1, 2, 3]
• 自调用函数写法( )( )
(function() {
console.log('自调用函数');
})();
等同于
(() => {
console.log('箭头函数');
})()
4、剩余参数
…args
剩余参数语法允许我们将一个不定数量的参数表示为一个数组,不定参数定义方式,这种方式很方便的去声明不知道参数情况下的一个函数
5、Object.keys()、object.assign()
- Object.keys()
获取对象的所有属性名或方法名,返回一个数组 - object.assign()
assign方法将多个原对象的属性和方法都合并到了目标对象上,可以接收多个参数,第一个参数是目标对象,后面都是源对象
6、for…of 循环
var arr=["a","b","c"]
for(var v of arr){
console.log(v)
}//a b c
7、import和export
ES6模块化规范(浏览器端和服务器端通用)
①. 每个js文件都是一个独立的模块
②. 暴露:export关键字
③. 导入:import关键字
(package.json文件中加上: “type”: “module”)
8、Promise对象
promise:处理异步程序,主要解决异步深层嵌套问题
回调地狱(横向金字塔):大量使用回调函数进行异步操作,但异步操作什么时候返回结果是不可控的,所以我们希望几个异步请求按照顺序来执行,就将异步操作嵌套起来,嵌套的层数特别多,即回调地狱。
回调地狱解决方案:
①. promise
②. async/await
③. generator
事件发布/监听模式
三种状态:
①最初状态:pending 等待中,此时promise的结果为undefined
②当resolve(value)调用时,达到最终状态之一:fulfilled,(成功的)完成,此时可以获取结果value
③当reject(error)调用时,达到最终状态之一:reject,失败,此时可以获取错误信息error
9、解构赋值
解构赋值:从数组和对象中提取值,对变量进行赋值
• 解构赋值就是把数据结构分解,然后给变量进行赋值
• 如果解构不成功,变量跟数值个数不匹配的时候,变量的值为undefined
• 数组解构用中括号包裹,多个变量用逗号隔开:let [ 变量,变量];
• 对象解构用花括号包裹,多个变量用隔开: let {属性:变量,属性:变量…… }。属性名和变量名一样时,变量名可以省略不写,只写属性名。
作用:让我们方便的去取对象中的属性跟方法,减少代码量
10、Set数据结构
Set数据结构:类似于数组,但是成员的值都是唯一的,没有重复的值
实例方法:
• add(value):添加某个值,返回 Set 结构本身
• delete(value):删除某个值,返回一个布尔值,表示删除是否成功
• has(value):返回一个布尔值,表示该值是否为 Set 的成员
• clear():清除所有成员,没有返回值
• size():数据的长度
应用:数组去重
11、class
class类的继承
12、async、await
使用async、await,搭配promise,可以通过编写形似同步的代码来处理异步流程,提高代码的简洁性和可读性
async用于声明一个function是异步的
await用于等待一个异步方法执行完成
13、修饰器
@decorator是一个函数,用来修改类甚至于是方法的行为
修饰器本质就是编译时执行的函数
14、Symbol
symbol是一种基本类型,通过调用symbol函数产生,接收一个可选的名字参数,该函数返回的symbol是唯一的
15、Proxy
使用代理监听对象的操作
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。