[JS] return 一个函数,并定义了名称的作用是什么?



function test(){
// 在一个函数体里,返回类型是函数
// 按我理解,直接返回匿名函数就行了,但有时见到的,是定义了名称的
// 不理解这样有什么,定义了名称有什么意义?
 return function newFunc(){
     //....
  }
}


比较常见的,在NG里,创建的controller,也是会定义带名称的函数。

7 个解决方案

#1


贴出具体的、公认的类库中例子。

#2


javascript 的函数就是类型,同时也是类型的 constructor 函数。因此类型中完全可能定义具体名称的属性、方法函数。但是不是你这种设计概念。

如果你认为流行的类库中也常有这类写法,精选2、3个 demo 贴出来。

#3


编程的确要追求更简洁的写法,但同时,也要追求可阅读性。

比如这个 test() 函数,完全可以写成 t(),为什么要多写三个字母呢?有时候代码简洁了,却要写更多的注释去帮助理解,其实并没有减少工作量。

我也觉得这个函数写成具名的没有直接的作用,可能是作者觉得这样更容易理解,相当于写了一句注释:“看!我返回一个新函数了!”

#4


自己写一些 公共方法  的 时候 会用  return ,一般你的 第一种方法就可以了

#5


引用 1 楼 sp1234 的回复:
贴出具体的、公认的类库中例子。


谢谢关注。
例如在nodes in action一书中,中文翻译版,第119页,关于logger的中间件示例代码:

function setup (format) {
    var regexp = /:(\w+)/g;
    return function logger(req, res, next){
        // codes....
    }

// 例如上面这个返回的函数,在我看来,logger这个命名,完全不必要的。
// 直接 return function(req, res, next)...不就行了
// 因为命名,跟不命名,我觉得是完全没有区别的,也不能带来其它实质的程序影响
// 难道不是吗?
}

#6


引用 3 楼 closurer 的回复:
编程的确要追求更简洁的写法,但同时,也要追求可阅读性。

比如这个 test() 函数,完全可以写成 t(),为什么要多写三个字母呢?有时候代码简洁了,却要写更多的注释去帮助理解,其实并没有减少工作量。

我也觉得这个函数写成具名的没有直接的作用,可能是作者觉得这样更容易理解,相当于写了一句注释:“看!我返回一个新函数了!”


谢谢关注。
感觉有点道理,否则我也实在想不出其它什么作用。

#7


引用 2 楼 sp1234 的回复:
javascript 的函数就是类型,同时也是类型的 constructor 函数。因此类型中完全可能定义具体名称的属性、方法函数。但是不是你这种设计概念。

如果你认为流行的类库中也常有这类写法,精选2、3个 demo 贴出来。



还是node in action中文版第124页。
关于connect


app.use(function hello(req, res){
        // code....
    })
    .listen(3000);
// use()中的函数,在我看来,app.use(function(req, res){})跟 app.use(function hello(req, res){})
// 这两种方式没有任何区别,命名后,对程序而言,没有任何影响。
// 对不对?那为什么要多此一举给一个本应该是匿名函数进行命名呢?

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告