I'm following the book "javascript definitive guide" and i found this example
PHP Code:
// Register the function f to run when the document finishes loading.
// If the document has already loaded, run it asynchronously ASAP.
function onLoad(f) {
if (onLoad.loaded) // If document is already loaded
window.setTimeout(f, 0); // Queue f to be run as soon as possible
else if (window.addEventListener) // Standard event registration method
window.addEventListener("load", f, false);
else if (window.attachEvent) // IE8 and earlier use this instead
window.attachEvent("onload", f);
}
// Start by setting a flag that indicates that the document is not loaded yet.
onLoad.loaded = false;
// And register a function to set the flag when the document does load.
onLoad(function() { onLoad.loaded = true; });
I do not understand what means
onLoad(function() { onLoad.loaded = true; });
It seem like an abbreviated synthax of "addEventListener" method, but doing some proofs it never is executed...
So, in this snippet i can't find the utility because no listener are initialized and no of his function will be executed
I don't want to say something stupid, but since noone else replied, i'll try my explanation:
First, you define a function onLoad which takes one argument - f. Then you set its public property loaded to false. This property signals, that the whole document has already been loaded. Then you call onLoad, passing another anonymous function as an argument.
That means, inside the call of onLoad, f becomes equal to this anonymous function, making it no longer anonymous in onLoad's scope. Therefore, setTimeout, addEventListener and attachEvent can reference it as f.
If you'd call onLoad another time with some different function as its argument, it would be added to setTimeout's queue with zero delay, which pretty much means invoked immediately.
I'd be happy, if anyone corrects any mistakes, i may have written.
Bookmarks