箭头函数相当于匿名函数,并且简化了函数定义
(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()) >>>10function Test() {this.num = 100;this.func = function(){console.log(this.num); // 100var that = this;#以下两种写法的结果一样#这里不能为this.num,它在匿名函数里,this指向windowssetTimeout(function(){console.log(that.num);}, 500);setTimeout(() => console.log(this.num), 500)};
}
var obj = new Test();
obj.func();
箭头函数内部的this
是词法作用域,由上下文确定,无法通过call与apply进行绑定
JavaScript中的Object.defineProperty()和defineProperties()
https://segmentfault.com/a/1190000011294519