Как это объяснение этого поведения? (Когда созданы функции?)

Код, подходящий прост:

console.log("So it begins.");
foo();
function foo() { console.log("In foo()."); }
console.log("So it ends.");

Почему foo () выполняется, прежде чем он будет определен (ретроспективное редактирование: в Chrome and Safari)?

Я немного чинил с этим, тестируя следующий код в Chrome, Safari и Firefox:

javascript:foo();function foo() { alert("Oh."); }

оповещение отображается в Chrome и Safari, в то время как Firefox остается молчать.

Есть ли пояснение Для этого удивительного, непоследовательного поведения?

5
задан pimvdb 7 September 2011 в 16:05
поделиться