es5:
var sum = function (a,b){
return a+b;
}
es6箭头函数:
var sum = (a,b)=>a+b
es5:
var sum = function (a){
return a;
}
es6:
var sum = a=>a;
es5 :
var objs = function (){
return {name:"zhangsan",age:"12"}
};
es6
var objs = ()=>({name:"zhangsan",age:"12"});
回调函数的用处
es5
[1,2,3].map(function (x){
return x*x;
})
es6
[1,2,3].map(x=>x*x);
函数中的this,是绑定时所在的作用域,而不是指向运行时所在的作用域
function timer (){
this.s1 = 0;
this.s2 = 0;
setInterval(()=>{
this.s1++;
},1000);
}
var n1 = new Timer();
setTimeout(()=>{
console.log(n1.s1+","+n1.s2);
},3000);
//这个时候我们会发现n1.s1发生了改变,因为this指向的是绑定时的作用域而不是运行时所在的作用域。
function foo (){
setTimeout(()=>{
console.log("args:arguments);
},1000)
foo(1,2,3,4,5);
//箭头函数内部变量arguments的问题,其实就是函数中的arguments的变量,
另外由于箭头函数没有自己的this,所以不能使用call(),apply的方法。
网友评论