Es6的用法
var callBack=[]; // 这个等于是个闭包,i会累加到3在做运算,所以结果都是6 for(var i=0;i<=2;i++) { callBack[i]=function(){ return i*2; } } console.table([ callBack[0](), callBack[1](), callBack[2]() ]) var callBacks=[]; for(let j=0;j<=2;j++) //let 作用域为{}号内,结果为0,2,4 { callBacks[j]=function(){ return j *2; } } console.table([ callBacks[0](), callBacks[1](), callBacks[2](), ]);
在Es6中{}可以用来分割作用域
{ function test(){ return 1; } console.log(test()); { function test(){ return 2; } console.log(test()); } }
Es6中箭头函数this指向问题 var person=function(){ //this的指向,是该函数被调用的对象,在当前d是c调用的,所以是c对象中的a this.a="a", this.b="b", this.c={ a:"a++", d:function(){ return this.a; } } }; console.log(new person().c.d()); var student=function(){ //Es6中this是指向当前对象的实例 this.a="a", this.b="b", this.c={ a:"a++", d:()=>{ return this.a; }, } } console.log(new student().c.d());
Es6中参数赋值,和可扩展参数
function t(x,y,z){ x=x || 2; y=y || 7; z=z || 1; return x+y+z; } console.log(t()); function f(x,y,z) { if(y==undefined) { y=8; } if(z==undefined) { z=2; } return x+y+z; } console.log(f(1)); function j(x=5,y=4,z=1) { return x+y+z; } console.log(j(1,6,4)); function t(...a) //...a扩展运算符,代表的是一个可变参数的列表,并且是个数组 { var sum=0; a.forEach(x=>{ sum+=x; }) return sum; }; console.log(t(1,2,3));