箭头函数
什么是箭头函数?
暂时理解:箭头函数相当于匿名函数。
箭头函数的格式:
x => x * x
这就相当于
function(x){
return x*x;
}
不过这种适合在无参的情况下使用,他省略了{ … }和return
如果有一个参数:
(x) => {
if(x > 0){
return x*x;
}else{
return -x*x;
}
}
如果有两个参数:
(x, y) => {
return x+y;
}
还可以是可变参数:
(x,y, ...fun) => {
var i, sum = x + y;
for(i=0; i<fun.length; i++){
sum += fun[i];
}
return sum;
}
如果返回的是一个对象:
(x) => ({
foo:x
})
必须要带上圆括号。
this
this总是指向词法作用域,也就是外层调用者obj。
var obj = {
birth:1994,
getAge: functin(year){
var b = this.birth;//1994
var fn = (y) => y-this.birth;
retrn fn.call({birth:2000}, year);
}
}
obj.getAge(2015); //21 不是15
原因:
由于this在箭头函数中已经按照词法作用域绑定了,所以,用call()或者apply()调用箭头函数时,无法对this进行绑定,即传入的第一个参数被忽略.