В функции Javascript вам нужно определить вложенные функции как выражения функций или разрешены объявления функций в теле функции? Например, будет ли подобное подобное соответствовать требованиям?Вложенные функции Javascript
function a() {
function b() {
function c() {
window.alert(3);
}
window.alert(2);
}
window.alert(1);
}
Или вам нужно было сделать что-то подобное?
function a() {
var a = function() {
var c = function() {
window.alert(3);
}
window.alert(2);
}
window.alert(1);
}
ECMA-262 говорит, что:
Несколько широко используемых реализаций ECMAScript, как известно, поддерживают использование FunctionDeclaration в качестве заявления. Однако существуют существенные и непримиримые вариации среди реализаций в семантике, применяемых к таким функциям. Из-за этих непримиримых различий использование FunctionDeclaration в качестве Statement приводит к тому, что код, который не надежно переносится среди реализаций. Рекомендуется, чтобы реализации ECMAScript либо запрещали это использование FunctionDeclaration, либо выдавали предупреждение, когда такое использование встречается. Будущие выпуски ECMAScript могут определять альтернативные переносные средства для объявления функций в контексте Statement.
Означает ли это, что объявление функции в теле функции технически неверно, или я получил это совершенно неправильно? Я слышал, что люди называют тело блоком, который, согласно стандарту, является одним или несколькими утверждениями, но я не уверен.
Я не уверен, что такое стандарт, кажется немного запутанным, но, честно говоря, у меня никогда не было проблем с вложением объявлений функций в IE8 + и во всех других браузерах. – elclanrs