箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种只包含一个表达式,连{ ... }和return都省略掉了。还有一种可以包含多条语句,这时候就不能省略{ ... }和return:
ES3 / ES5 关于遍历是这样去写的
var evens = [1, 2, 3, 4, 5];
var odds = evens.map(function(v) {
return v + 1
});
console.log(evens, odds);
/* 打印结果:
* 1,2,3,4,5;
* 2,3,4,5,6;
*/
ES6 箭头函数
let evens = [1, 2, 3, 4, 5];
let odds = evens.map(v => v + 1);
console.log(evens, odds);
/* 打印结果:
* 1,2,3,4,5;
* 2,3,4,5,6;
*/
箭头函数的this永远指向其父作用域,任何方法都改变不了,包括call,apply,bind。
普通函数的this指向调用它的那个对象。
ES3 / ES5 写法
var factory = function() {
this.a = 'a';
this.b = 'b';
this.c = {
a: 'a+',
b: function() {
return this.a
}
}
}
console.log(new factory().c.b());
/* 打印结果
* a+
* 为什么是 a+ ? 我相信都知道, 那也多说两句
* new factory().c.b()
* new一个新的示例 .c 也就是 this.c这个对象, .b 也就是调用这个实例 b 内的 this.a 就是 this.c 内的 .a实例 'a+'
*/
ES6
let factory = function() {
this.a = 'a';
this.b = 'b';
this.c = {
a: 'a+',
b: () => {
return this.a
}
}
}
console.log(new factory().c.b());
/* 打印结果
* a
* 为什么是 a 不是 a+
* 箭头函数这个函数体中的this是定义是this的指向
*/
网友评论