Когда этот вопрос был задан, был распространен ECMAScript 5 (ES5). В строгом режиме ES5 объявления функций не могут быть вложены внутри блока if
, как показано в вопросе. В нестрогом режиме результаты были непредсказуемыми.
В отношении 2018 года многие браузеры поддерживают ECMAScript 2015 (ES2015) в той мере, блоки . В среде ES2015 внутри этого блока будет помещено объявление функции внутри блока. Код в вопросе приведет к неопределенной функциональной ошибке, потому что функция a
объявляется только в рамках операторов if
и, следовательно, не существует в глобальной области.
Если вам нужно для условного определения функции, вы должны использовать выражения функции .