Javascript函数在另一个函数里面创建了一个新实例?

时间:2014-05-06 10:04:34

标签: javascript node.js express

我试图找出express.Router()是否返回路由器的新实例。因此,在阅读代码时,我会遇到这个基本的JavaScript问题。

./路由器/ 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 个答案:

答案 0 :(得分:2)

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

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

function f() {

}

vs

var f = function f() {}; // + hoisting