When defining a closure (or module pattern) I've seen some developers use either a function expression e.g. var f = function{...};
or use a function declaration function f {...}
.
I understand hoisting and the general differences, but I'm concerned about any differences that might apply in a closure.
I'm wondering which is preferred and why? Any advantages/disadvantages? If there are no general differences which is more common?
Consider the two styles below:
var deepThought = (function(){
var someSecret = "42";
function whatIsTheAnswerToTheUltimateQuestion() {
return someSecret;
}
function whatIsTheUltimateQuestion() {
return "I'm not sure yet. You might have to wait a while...";
}
return {
whatIsTheAnswerToTheUltimateQuestion : whatIsTheAnswerToTheUltimateQuestion,
whatIsTheUltimateQuestion : whatIsTheUltimateQuestion
};
})();
var deepThought2 = (function(){
var someSecret = "41";
var whatIsTheAnswerToTheUltimateQuestion = function () {
return someSecret;
};
var whatIsTheUltimateQuestion = function () {
return "I'm not sure yet. You might have to wait a while...";
};
return {
whatIsTheAnswerToTheUltimateQuestion : whatIsTheAnswerToTheUltimateQuestion,
whatIsTheUltimateQuestion : whatIsTheUltimateQuestion
};
})();