美文网首页
ECMAScript 6.0 箭头函数

ECMAScript 6.0 箭头函数

作者: 张思学 | 来源:发表于2019-11-04 20:30 被阅读0次

箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种只包含一个表达式,连{ ... }和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的指向
 */

相关文章

网友评论

      本文标题:ECMAScript 6.0 箭头函数

      本文链接:https://www.haomeiwen.com/subject/zaodbctx.html