简介:ES:全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。
ES6好处:
声明变量let
• let关键字就是用来声明变量的 • 使用let关键字声明的变量具有块级作用域(一对大括号 { } 产生的作用域) • 在一个大括号中 使用let关键字声明的变量才具有块级作用域 var关键字是不具备这个特点的 • 防止循环变量变成全局变量 • 使用let关键字声明的变量没有变量提升 • 使用let关键字声明的变量具有暂时性死区特性
声明常量const
• const声明的变量是一个常量 • 既然是常量不能重新进行赋值,如果是基本数据类型,不能更改值,如果是复杂数据类型,不能更改地址值 • 声明 const时候必须要给定值(赋值) • 具有块级作用域
let const var 区别
用一对反引号``标识,可以当作普通字符串使用,也可以用来定义多行字符串,也可以在字符串中嵌入变量、js表达式或函数。
( 形参 ) => { 函数体 } (匿名函数、简化函数定义语法)
注意:
• 函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号 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('箭头函数'); })()
…args
剩余参数语法允许我们将一个不定数量的参数表示为一个数组,不定参数定义方式,这种方式很方便的去声明不知道参数情况下的一个函数
var arr=["a","b","c"] for(var v of arr){ console.log(v) }//a b c
ES6模块化规范(浏览器端和服务器端通用)
①. 每个js文件都是一个独立的模块
②. 暴露:export关键字
③. 导入:import关键字
(package.json文件中加上: “type”: “module”)
promise:处理异步程序,主要解决异步深层嵌套问题
回调地狱(横向金字塔):大量使用回调函数进行异步操作,但异步操作什么时候返回结果是不可控的,所以我们希望几个异步请求按照顺序来执行,就将异步操作嵌套起来,嵌套的层数特别多,即回调地狱。
回调地狱解决方案:
①. promise
②. async/await
③. generator
事件发布/监听模式
三种状态:
①最初状态:pending 等待中,此时promise的结果为undefined
②当resolve(value)调用时,达到最终状态之一:fulfilled,(成功的)完成,此时可以获取结果value
③当reject(error)调用时,达到最终状态之一:reject,失败,此时可以获取错误信息error
解构赋值:从数组和对象中提取值,对变量进行赋值
• 解构赋值就是把数据结构分解,然后给变量进行赋值 • 如果解构不成功,变量跟数值个数不匹配的时候,变量的值为undefined • 数组解构用中括号包裹,多个变量用逗号隔开:let [ 变量,变量]; • 对象解构用花括号包裹,多个变量用隔开: let {属性:变量,属性:变量…… }。属性名和变量名一样时,变量名可以省略不写,只写属性名。 作用:让我们方便的去取对象中的属性跟方法,减少代码量
Set数据结构:类似于数组,但是成员的值都是唯一的,没有重复的值
实例方法: • add(value):添加某个值,返回 Set 结构本身 • delete(value):删除某个值,返回一个布尔值,表示删除是否成功 • has(value):返回一个布尔值,表示该值是否为 Set 的成员 • clear():清除所有成员,没有返回值 • size():数据的长度
应用:数组去重
class类的继承
使用async、await,搭配promise,可以通过编写形似同步的代码来处理异步流程,提高代码的简洁性和可读性
async用于声明一个function是异步的
await用于等待一个异步方法执行完成
@decorator是一个函数,用来修改类甚至于是方法的行为
修饰器本质就是编译时执行的函数
symbol是一种基本类型,通过调用symbol函数产生,接收一个可选的名字参数,该函数返回的symbol是唯一的
使用代理监听对象的操作