javascript 闭包的选择问题?!
发布于 8 年前 作者 cnlile 3580 次浏览 来自 问答

偶尔看Loopback文档,看到文档的中间件写法是: module.exports = function(options) { return function customHandler(req, res, next) { // use options to control handler’s behavior } }; 本来也没觉得什么,很正常的闭包写法么。。。 突然觉得,为啥要用闭包,我正常的函数 module.exports = function(req, res, next) { // use options to control handler’s behavior }; 也可以正常工作么,为啥文档推荐这个写法。。。。后来,很好奇,发现很多源代码都是闭包写法,其实很多地方不用闭包,用普通函数也能实现,而且不容出错。 请各位指教一下,为啥这里推荐采用这个写法,是不是我还没有对nodejs 什么地方理解不透彻。

4 回复

如果你的中间件没用任何可以配置的话,那么直接返回函数就好了,loopback之所以这样做是因为基本很多中间件都会有参数配置的过程,所以为了统一中间件的使用使用了闭包

function(options) { //此处参数配置
	return function(req, res, next) {
		....
	}
}

see http://blog.bithound.io/using-closure-to-write-express-middleware/ 不用闭包,意味着只要有配置,就得使用内联方式,降低可读性的同时产生冗余代码

中间件基本都需要参数吧

@DevinXian 嗯,看了,谢谢!

回到顶部