是否可以在JavaScript中调用另一个函数中本地定义的函数?

时间:2014-10-22 15:14:29

标签: javascript function scope override

是否可以在JavaScript中调用另一个函数中本地定义的函数?我有一个非常类似的代码:

var module = function () {
    function inner() {
        // Some code here
    }
    // Some code here
}

var originalModule = module;
var module = function () {
    originalModule();
    // inner() must be called here
}

所以我重写了原始的模块实现,但是在新实现的某些时候我需要调用inner()函数。我无法编辑原始实现。到目前为止,我看到的唯一方法是从原始复制inner()函数并在新的函数中定义它。还有另一种方式吗?

2 个答案:

答案 0 :(得分:1)

由于在inner()范围内定义module(),您无法在此范围之外访问它。

此模式用于实现module()私有方法。

答案 1 :(得分:0)

这通常不是一个好习惯,但你可以做this之类的事情:

  function a(x) {    // <-- function
      function b(y) { // <-- inner function
        return x + y; // <-- use variables from outer scope
      }
      return b;       // <-- you can even return a function.
   }
   a(3)(4);           // == 7.