var callBack=[]; // 这个等于是个闭包,i会累加到3在做运算,所以结果都是6
for(var i=;i<=;i++)
{
callBack[i]=function(){
return i*;
}
}
console.table([
callBack[](),
callBack[](),
callBack[]() ]) var callBacks=[];
for(let j=;j<=;j++) //let 作用域为{}号内,结果为0,2,4
{
callBacks[j]=function(){
return j *;
}
}
console.table([
callBacks[](),
callBacks[](),
callBacks[](),
]);
在Es6中{}可以用来分割作用域 {
function test(){
return ;
}
console.log(test());
{
function test(){
return ;
}
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 || ;
y=y || ;
z=z || ;
return x+y+z;
} console.log(t()); function f(x,y,z)
{
if(y==undefined)
{
y=;
}
if(z==undefined)
{
z=;
}
return x+y+z;
}
console.log(f()); function j(x=,y=,z=)
{
return x+y+z;
}
console.log(j(,,)); function t(...a) //...a扩展运算符,代表的是一个可变参数的列表,并且是个数组
{
var sum=;
a.forEach(x=>{
sum+=x;
})
return sum;
};
console.log(t(,,));