内部(私有)函数

299 阅读1分钟

既然函数与其他类型的值本质上是一样的,因此,没有什么理由可以阻止我们在一个函数内部去定义另一个函数。

function outer(param){
    function inner(theinput){
        return theinput * 2;
    }
    return 'The result is ' + inner(param);
}

outer(5);    //'The result is 10'

我们也可以改用 函数标识记法 来写这段代码:

var outer = function(param){
    var inner = function(theinput){
        return theinput * 2;
    }
    return 'The result is ' + inner(param);
}

outer(8);    //'The result is 16'

当我们调用全局函数 outer( ) 时,本地函数 inner( ) 也会在其内部被调用。由于 inner( ) 是本地函数,它在 outer( ) 之外的地方是不可见的,所以我们也能将它称之为 私有函数。

outer(4);    //"The result is 8"

outer(2);    //"The result is 4"

inner(2);    //ReferenceError: inner is not defined

使用私有函数的好处主要有以下几点:

  • 有助于我们确保全局名字空间的纯净性(这意味着命名冲突的机会很小);
  • 确保私有性--这使我们可以选择只将一些必要的函数暴露给“外部世界”,而保留属于自己的函数,使它不为该应用程序的其他部分所用。

本文摘自《JavaScript面向对象编程指南》,分享的目的仅供个人学习和理解,如需转载请备注本文出处,谢谢!