本文谈谈关于ES6的新特性,关于专业知识表述不当之处,欢迎批评指正!

本文谈谈关于ES6的新特性,主要从1.变量、2.函数、3.数组、4.字符串、5.面向对象、6.Promise、7.generator、8.JSON等几个方面叙述。
1、变量
var 可以重复声明,无法限制修改,函数级作用域
let 不能重复声明,变量-可以修改,块级作用域
const 不能重复声明,常量-不能修改,块级作用域

2、函数

//原始函数
function(){
	//
}
//箭头函数
()=>{
	//
}

1.参数唯一可省略()
2.return唯一可省略{}

//函数的参数
1.参数的扩展、数组展开
1.1收集参数
function show(a,b,...args){}
*Rest Parameter必须为最后一个形参
1.2展开数组
...arr => a,b,c
*展开后的效果跟直接展示数组的内容一致

2.默认参数
为定义好的可选参数赋值即为默认参数
传值覆盖,空值默认

3.解构赋值
1.左右两边结构必须一致
2.右边必须是合法的值
3.声明和赋值不可分离(在一个语句内完成)
let [a,b,c]=[1,2,3];
let {a,b,c}={a:1,b:2,c:3};
let [json,arr,num,str]=[{a:1,b:2},[1,2],1,'xcbdh'];

3、数组
1.map 映射-一对一

arr.map(item=>item>=60?'及格':'不及格');

2.reduce 汇总-多对一

arr.reduce(function(tmp,item,index){
	return tmp+item
});

3.filter 过滤器-筛选

arr.filter(item=>{
	if(item%3==0){
		return true
	}else{
		return false
	}
});
//进阶一下
arr.filter(item=>item%3==0);

4.forEach 迭代-循环遍历

arr.forEach((item,index)=>{
	//
})

4、字符串
1.新方法
startsWith 匹配字符串开头
endsWith 匹配字符串结尾
2.字符串模板
``
*使用${}放变量

5、面向对象
1.class关键字、构造器和类分离
2.class内部添加方法

class User{
	constructor(name,pwd){
		this.name=name;
		this.pwd=pwd;
	}
	showName(){
		alert(this.name);
	}
	showPwd(){
		alert(this.pwd);
	}
}
//继承:
class VipUser extends User{
	constructor(name,pwd,level){
		super(name,pwd);
		this.level=level;
	}
	showLevel(){
		alert(this.level);
	}
}
//面向对象应用-React
class Item extends React.Component{
	constructor(...args){
		super(...args);
	}
	
	render(){
		return <li>{this.props.str}</li>
	}
}

class List extends React.Component{
	constructor(...args){
		super(...args);
	}
	
	render(){
		return <ul>
			{this.props.arr.map(a=><Item str={a}></Item>)}
		</ul>;
	}
}

window.onload=function(){
	let oDiv=document.getElementById('div1');
	
	ReactDOM.render(
		<List arr={['aaa','bbb','ccc']}></List>,
		oDiv
	)
}

6、Promise

异步:操作之间无关,可同时进行多个操作
同步:同时只能做一个操作

异步:代码更复杂
同步:代码简单

*Promise用同步的方式书写异步方法

Promise.all([$.ajax(),$.ajax()]).then(results=>{
	//正确
},err=>{
	//错误
});

*Promise.race()

7、generator

function *show(){
	yield
}

//举个例子
const koa=require('koa');
const mysql=require('koa-mysql');
let db=mysql.createPool({host:'localhost',user:'root',password:'123456',database:'20201004'})
let server=new koa();
server.use(function *(){
	let data=yield db.query(`SELECT * FORM user_table`);
	this.body=data;
});
server.listen(2048);

8、JSON
1.JSON对象
JSON.stringify
JSON.parse
2.简写
key和value相同时可只写key
方法: show:function(){...}
改写成show(){...}
3.JSON的标准写法
*只可使用双引号
*所有的key需要添加引号

9、ES预览
1.数组
includes
检查数组是否包含某个元素

arr.keys()
arr.values()
arr.entries()
for...in 循环key
for...of 循环value(不可用于json)

keys 取出key
values 取出value
entries 取出key-value(*entry实体)

2.幂
a**b(a的b次方)

3.字符串
新方法:
padStart
padEnd
例子:str.padStart(10,'0')//字符串取10位,开头补0

4.语法容忍度提高
元素、参数后多余逗号不报错

5.generator yield
generator yield 转变成:async await

async function show(){
	alert('a');
	await;
	alert('b');
}

不再依赖外部runner
可以使用箭头函数