美文网首页
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