面试时被问到箭头函数和普通函数的区别。。。
-_-||
举个例子:
- function make () {
- return ()=>{
- console.log(this);
- }
- }
- var testFunc = make.call({ name:'foo' });
- testFunc();
- testFunc.call({ name:'bar' });
- Object {name: "foo"}
- Object {name: "foo"}
原因:箭头函数不会自动绑定局部变量,如this,arguments,super(ES6),new.target(ES6)等
所以箭头函数没有它自己的this值,箭头函数内的this值继承自外围作用域。在箭头函数中调用 this 时,仅仅是简单的沿着作用域链向上寻找,找到最近的一个 this 拿来使用
- {
- ...
- addAll: function addAll(pieces) {
- var self = this;
- _.each(pieces, function (piece) {
- self.add(piece);
- });
- },
- ...
- }