这篇文章主要是自己对ES6理解不全面,写的不是很形象。如果大家有更好的理解,欢迎指正。1、箭头函数省略function,省略return;原来的函数(){return...}变成了()=>2。const和letconst的过程大概就是检测内存中是否存在名字?错误:姓名;在命名过程中,如果函数出错,名称仍然占据过去,不能为函数重新定义名称。变量x;constx=()=>{...}//报错,名字已经存在consty=()=>{console.log(1)//报错,miss},定义函数失败consty=()=>{console.log(1)}//报错,namealreadyexistslet作用于块级作用域,我粗浅的理解,类似于一个闭包参数。所以不可能在同一个作用域内定义与let相同的参数。闭包参数有一个特点,外部是变量,内部是常量。让x=1;letx=2;//报错,x已经声明了。functiontest(){letx=3};//没有错误for(vari=0;i<5;i++){setTimeout(()=>{console.log(i)},1000)}//55555for(leti=0;i<5;i++){setTimeout(()=>{console.log(i)},1000)}//01234这实际上等于varn=(t)=>{setTimeout(()=>{console.log(t)},1000)}for(vari=0;i<5;i++){n(i);}3.promises异步处理函数定义一个函数是newPromise(),Promises中有两个参数对象,resolve//success,reject//failure,这两个参数写在函数的最后,表示是否函数执行成功。resolve和reject可以带自己的参数。.then()可以无限链接。我个人觉得这个可以封装一个方法。varcon1=newPromise(function(resolve,reject){setTimeout(()=>{console.log(1);true?resolve('success'):reject('failure')},1000)})varcon2=(t)=>{setTimeout(()=>{console.log(t)},1000)};con1.then((解析参数)=>{con2(解析参数)},(拒绝参数)=>{con2(parameterofreject)})4.c??lass类要涉及原型链,是一个函数的原型函数,区别于构造函数。主要用于继承。我理解的继承的意义就是增加代码重用。classtest1{testOne(){console.log('这是test1.testOne')}}classtest2extendstest1{testTwo(){console.log('这是test2.testTwo')}}vartest3=newtest2();test3.testOne();//thisistest1.testOnetest3.testTwo();//thisistest1.testTwo5.Arraymergingrestrest写...vartestRest=(...x)=>{console.log(x)};tesrRest(1,2,3)//[1,2,3]consta=[1,2,3];constb=[4,5,6];constc=[...a,...b];//[1,2,3,4,5,6]6.遍历forEachc.forEach(function(data){console.log(data)})//1234567.默认值varz=undefined;varx1=z||'默认值z';//默认值zvary='y';varx2=y||'默认值y';//yvarq=false;varx3=q||'默认值q';//默认值qvarw=null;varx4=w||'默认值w';//默认值wvare='';varx5=e||'defaultvaluee';//e的默认值我觉得最懵的还是类,因为原型链还没有完全理解。promise因为里面的格式太有限,网上找的很多解释都没有说明reslove和reject的判断条件
