内部私有函数
function outer(param){
function inner(theinput){
return theinput*2;
};
return 'The result is '+inner(param);
};
输出结果如下
调用outer的时候,inner函数也执行了,直接调用inner,显示为未定义;
私有函数有以下好处
有助于确保全局名字空间的纯净性
确保私有性---我们可以选择只将一些必要的函数暴露给外部世界,而保留属于自己的函数,使他们不为该应用程序的其他部分所用。
返回函数的函数
function a(){
console.log("A!");
return function(){
console.log("B!");
};
};
输出结果
能重写自己的函数
var a=(function(){
function someSetup(){
var setup='done';
};//私有函数
function actualWork(){
console.log('Woky-worky');
};
someSetup();
return actualWork;//第一次执行时,会返回该函数,但不执行,等于重写了a
}() //执行自调
);
输出结果
最初被调用时,重写a函数,之后调用a()时,显示为‘Woky-worky’