Да, сейчас я аргументирую своё утверждение с помощью спецификации.
Спецификация запрещает объявлять функции внутри блоков в любом режиме, не только строгом.
http://es5.javascript.ru/x12.html#x12 - здесь приведен список возможностей для Statement и в нём нет FunctionDeclaration.
Там же приводится замечание, касающееся нашей темы.
Цитата:
|
ПРИМЕЧАНИЕ Известно, что несколько широко распространённых реализаций языка ECMAScript поддерживают использование FunctionDeclaration Объявление функции в качестве инструкции. Однако в семантике, применимой к таким объявлениям функций, имеются существенные противоречивые вариации реализаций. Из-за этих противоречий код, написанный с использованием FunctionDeclaration в качестве Statement, не является надёжным при переносе из одной реализации в другую. Поэтому для реализаций ECMAScript рекомендуется либо отключать использование FunctionDeclaration, либо генерировать предупреждение в случае такого использования. Возможно, в последующих версиях языка ECMAScript появятся альтернативные средства для переноса кода, позволяющие объявлять функции в контексте Statement.
|