箭头函数相当于匿名函数,并且简化了函数定义
(x) => x + 1 相当于:
function(x){
return x + 1;
}
箭头函数有两种格式
1.只有一条表达式,可以不用写{..}与return
// 有参数:
(x, y) => x * x + y * y
// 无参数:
() => alert('无参数')
2.多条表达式
x => {
if (x > 0) {
return x * x;
}
else {
return - x * x;
}
}
如果返回值为对象
// SyntaxError:
x => { foo: x }
因为和函数体的{ ... }有语法冲突,所以要改为:
// ok:
x => ({ foo: x })
使用
var a = () => 10;
alert(a()) >>>10
function Test() {
this.num = 100;
this.func = function(){
console.log(this.num); // 100
var that = this;
#以下两种写法的结果一样
#这里不能为this.num,它在匿名函数里,this指向windows
setTimeout(function(){console.log(that.num);}, 500);
setTimeout(() => console.log(this.num), 500)};
}
var obj = new Test();
obj.func();
箭头函数内部的this
是词法作用域,由上下文确定,无法通过call与apply进行绑定