var f = function coolFunction() {
console.log('Привет из coolFunction!');
if (!coolFunction.wasInvoked) { setTimeout(coolFunction, 500); }
coolFunction.wasInvoked = true;
}
coolFunction();
Сколько раз в консоль будет выведено сообщение 'Привет из coolFunction!'?
Пояснение
Сообщение не будет выведено. Появится ошибка ReferenceError, потому что здесь используется не простое функциональное выражение (Function Expression), а именованное функциональное выражение (Named Function Expression), в котором имя функции видно только внутри самой функции, т.е. снаружи переменная с таким именем не создаётся.
Кстати, получить это имя вне функции всё-таки можно: нужно обратиться к свойству name. В данном примере console.log(f.name); напишет 'coolFunction'.