ES6新增了箭头函数,任何可以使用函数表达式的地方都可以使用箭头函数
格式
var test1 = function (a, b) {
return a + b;
}
//等价于
var test2 = (a, b) => { return a + b };
//调用
test1(1, 2);
test2(2, 3);
省略小括号
如果只有一个参数时,可以省略括号。
var test3 = a => { return a };
省略大括号
如果省略大括号,那么箭头后面只能包含一行代码,这行代码要么是赋值操作,要么是表达式。而且回返回这行代码。
//表达式
var test3 = (a,b) => a+b;
//等价于
var test4=(a,b)=>{return a+b};
//赋值操作
var test5=(x)=>x=6;
test5(value);
console.log(value);//6
一般用于嵌入函数
arr=[2,3,4]
console.log(arr.map(n=>n+1)));//[3,4,5]
//等价于
console.log(arr.map(function(n){return n+1});
箭头函数的this指向问题
箭头函数的this是在定义函数时绑定的,不是在执行过程中绑定的。简单的说,函数在定义时,this就继承了定义函数的对象。
var obj={
func:function(){
console.log(this);
},
speak:function(){
setTimeout(function(){
console.log(this);
},1000)
},
say:function(){
setTimeout(()=>{
console.log(this);
},1000)
}
}
obj.func();//obj
obj.say();//obj
obj.speak();//window