Короче, вот так делать и все:
"В случае, когда функция определяется в зависимости от какого-либо условия, например, как это показано в двух приведенных ниже примерах, обработка описания функции должна предшествовать ее вызову. "
А вот интересно
<script>
var a = 10;
if (a) {
function alert1 () {alert(1);}
}
else {
function alert2() {alert(2);}
}
alert2();
</script>
в IE7 работает, а в Firefox ругается ) (на alert2 естесстно)