I have quite a few of these:
function addEventsAndStuff() {
// bla bla
}
addEventsAndStuff();
function sendStuffToServer() {
// send stuff
// get HTML in response
// replace DOM
// add events:
addEventsAndStuff();
}
Re-adding the events is necessary because the DOM has changed, so previously attached events are gone. Since they have to be attached initially as well (duh), they’re in a nice function to be DRY.
There’s nothing wrong with this set up (or is there?), but can I smooth it a little bit? I’d like to create the addEventsAndStuff() function and immediately call it, so it doesn’t look so amateuristic.
Both following respond with a syntax error:
function addEventsAndStuff() {
alert('oele');
}();
(function addEventsAndStuff() {
alert('oele');
})();
Any takers?
There’s nothing wrong with the example you posted in your question.. The other way of doing it may look odd, but:
There are two ways to define a function in JavaScript. A function declaration:
and a function expression, which is any way of defining a function other than the above:
…etc
function expressions can be named, but their name is not propagated to the containing scope. Meaning this code is valid:
but this isn’t:
So in order to name your function and immediately call it, you need to define a local variable, assign your function to it as an expression, then call it.