Dieser Code funktioniert immer, auch in verschiedenen Browsern: obwohlWarum kann ich eine Funktion verwenden, bevor sie in JavaScript definiert ist?
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();
ich nicht einen einzigen Hinweis auf, warum es sollte funktionieren finden konnte. Ich sah das zuerst in John Resigs Vortragsnotiz, aber es wurde nur erwähnt. Es gibt keine Erklärung dafür oder sonst wo.
Könnte jemand bitte mich aufklären?
In neueren Versionen von Firefox, das funktioniert nicht, wenn der Code in einem Try/Catch ist. Siehe diese Geige: http://jsfiddle.net/qzzc1evt/ –