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

Перезапись NFE по имени

Что будет при повторном вызове функции?

var f = function *!*sayHi*/!*(n) {
  alert(n);
  *!*sayHi = 0;*/!* // перезаписываем имя функции
}

f(1); // что выведет?
f(2); // а теперь что выведет?

Разумеется, в жизни мы не делаем такого, но разобрать ситуацию важно для общего понимания функций.

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

Ничего особенного не произойдет, функция будет работать как обычно:

var f = function *!*sayHi*/!*(n) {
  alert(n);
  *!*sayHi = 0;*/!*
}

f(1); // 1
f(2); // 2

Дело в том, что переменная f хранит ссылку на функцию.

Изнутри функции создается переменная sayHi, которая тоже ссылается на функцию. Если мы перезапишем её, то просто будет на одну ссылку на функцию меньше. Ну и что…

#410
Наверх

Реклама

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

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

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

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

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