Java教程

高阶函数2闭包-箭头函数-generator

本文主要是介绍高阶函数2闭包-箭头函数-generator,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

------------恢复内容开始------------

闭包:

函数作为返回值

高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。

我们来实现一个对Array的求和。通常情况下,求和的函数是这样定义的:

    

function sum(arr) {
    return arr.reduce(function (x, y) {
        return x + y;
    });
}

sum([1, 2, 3, 4, 5]); // 15

如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数!

function lazy_sum(arr) {
    var sum = function () {
        return arr.reduce(function (x, y) {
            return x + y;
        });
    }
    return sum;
}
var f = lazy_sum([1, 2, 3, 4, 5]); // function sum()

f(); // 15
 

    请再注意一点,当我们调用lazy_sum()时,每次调用都会返回一个新的函数,即使传入相同的参数

var f1 = lazy_sum([1, 2, 3, 4, 5]);
var f2 = lazy_sum([1, 2, 3, 4, 5]);
f1 === f2; // false

  f1()f2()的调用结果互不影响。

 

 

 闭包

 

function count () {
      var arr = [];
      for (var i = 1; i <= 3; i++) {
        arr.push(function () {
          return i * i 
        });
      }
      return arr;
    }

    var results = count();
    var f1 = results[0]
    var f2 = results[1]
    var f3 = results[2]
    console.log(f1());
    console.log(f2());
    console.log(f3());

 

 

箭头函数

 

x => x * x
上面的箭头函数相当于:

function (x) {
    return x * x;
}

this

.....

 

generator

....

 

  

 

这篇关于高阶函数2闭包-箭头函数-generator的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!