Мастер-классы по Javascript Екатеринбург Ростов-на-Дону Москва Узнать больше...
Содержание (скрыть) Содержание (показать)

Проверка на NFE

Каков будет результат выполнения кода? Почему?

(function g() { return 1; });

alert(g);

Решение
Решение

Ответ: ошибка везде кроме IE<9:

Начнем со скобок. Если бы их вокруг function не было, то результат был бы очевиден: код функции.

// обычное объявление функции (Function Declaration)
function g() { return 1; };

alert(g);

..Но скобки есть, и это даёт ошибку при alert(g):

(function g() { return 1; }); // Named Function Expression!

alert(g);

Ключ к решению — понимание, что функция в скобках (function ... ) являтся Function Expression, а значит у нас есть Named Function Expression, имя которого g видно только внутри функции.

Все браузеры, кроме IE<9 поддерживают это ограничение видимости и выведут ошибку ‘undefined variable’.

#169
Наверх

Реклама

Нашли опечатку?

Нашли опечатку на сайте? Что-то кажется странным?
Выделите соответствующий текст и нажмите Ctrl+Enter!

Последние Комментарии

Помоги другим!

Помоги другим узнать о хорошей статье!