Bearing in mind that a function is just like any other value, there’s nothing that stops you from defining a function inside another function.
function a(param) {
function b(theinput) {
return theinput * 2;
};
return 'The result is ' + b(param);
};
Using the function literal notation, this can also be written as:
var a = function(param) {
var b = function(theinput) {
return theinput * 2;
};
return 'The result is ' + b(param);
};
When you call the global function a(), it will internally call the local function b(). Since b() is local, it’s not accessible outside a(), so we can say it’s a private function.
a(2)
//"The result is 4"
a(8)
//"The result is 16"
b(2)
//b is not defined
The benefit of using private functions are as follows:
- You keep the global namespace clean (smaller chance of naming collisions).
- Privacy—you expose only the functions you decide to the “outside world”, keeping to yourself functionality that is not meant to be consumed by the rest of the application.