Ce code fonctionne toujours, même dans des navigateurs différents :
function fooCheck() {
alert(internalFoo()); // We are using internalFoo() here...
return internalFoo(); // And here, even though it has not been defined...
function internalFoo() { return true; } //...until here!
}
fooCheck();
Je n'ai cependant pas pu trouver une seule référence expliquant pourquoi cela devrait fonctionner. J'ai vu cela pour la première fois dans la note de présentation de John Resig, mais c'était seulement mentionné. Il n'y a pas d'explication, ni là, ni ailleurs d'ailleurs.
Quelqu'un pourrait-il m'éclairer ?
3 votes
Dans les nouvelles versions de Firefox, cela ne fonctionne pas si le code est dans un try/catch. Voir ce bidule : jsfiddle.net/qzzc1evt