2014-05-06 68 views
0

我想知道express.Router()是否返回路由器的新实例。所以当阅读代码时,我遇到了这个基本的JavaScript问题。Javascript函数里面的另一个函数创建了一个新的实例?

./router/index.j

var proto = module.exports = function(options) { 
    options = options || {}; 

    function router(req, res, next) { 
    router.handle(req, res, next); 
    } 

    // mixin Router class functions 
    router.__proto__ = proto; 

    router.params = {}; 
    router._params = []; 
    router.caseSensitive = options.caseSensitive; 
    router.strict = options.strict; 
    router.stack = []; 

    return router; 
}; 

在执行外部函数的任何时间(我认为它通过express.Router是如此()),是一种新的内部函数得到产生的?我相信如果它是var router = function(...){...}那么它是。但我不确定这件事。

+1

是的,确实以与函数表达式相同的方式创建闭包。 – Bergi

回答

2

是的,它会创建一个新的函数对象每次

函数的声明实际上是相同的悬挂命名函数表达式:

function f() { 

} 

VS

var f = function f() {}; // + hoisting 
相关问题