既然函数与其他类型的值本质上是一样的,因此,没有什么理由可以阻止我们在一个函数内部去定义另一个函数。
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面向对象编程指南》,分享的目的仅供个人学习和理解,如需转载请备注本文出处,谢谢!