闭包和函数引用

对函数式编程弄得不是很清楚,所以想请假一下下面这两种方法在实现上各有什么优劣点呢?

// 闭包

function func1() {

  // func1

}

function func2() {

  // func2

}

function doSomething(func) {

  return function() {

    // do something...

    return func

  }

}

var func1 = doSomething(func1);

var func2 = doSomething(func2);

// 函数引用

function doSomething() {

  // do something...

}

function func1() {

  doSomething();

  // func1

}

function func2() {

  doSomething();

  // func2

}


HUWWW
浏览 384回答 1
1回答

噜噜哒

拿func1()来举例子你两段代码的共同点是 执行func1()调用即执行了func1()的逻辑,又执行了doSomething的逻辑,区别在于组织代码的时候在第二段代码里你将 doSomething()函数放在了 func1()里,而第一段代码function func1() {  // func1   alert(a++); }function doSomething(func) {  return function() {    // do something...     var a=10;    return func   } }var funca = doSomething(func1);func1相当与闭包,你可以在func1里面访问doSomething这个函数实现逻辑过程中的所有数据,但是在第二段代码里显然没有这个功能
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript