Полный цикл в digital

Переопределение функций

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

function display(){
console.log("Доброе утро");
display = function(){
console.log("Добрый день");
}
}
// Доброе утро
display(); 
// Добрый день
display();

При первом срабатывании функции действует основной блок операторов функции, в частности, в данном случае выводится сообщение Доброе утро. И при первом срабатывании функции display также происходит ее переопределение. Поэтому при всех последующих вызовах функции срабатывает ее переопределенная версия, а на консоль будет выводиться сообщение Добрый день.

Но при переопределении функции надо учитывать некоторые нюансы. В частности, попробуем присвоить ссылку на функцию переменной и через эту переменную вызвать функцию:

function display(){
console.log("Доброе утро");
display = function(){
console.log("Добрый день");
}
}
// присвоение ссылки на функцию до переопределения
var displayMessage = display;
// Доброе утро
display(); 
// Добрый день
display(); 
// Доброе утро
displayMessage(); 
// Доброе утро
displayMessage();

Здесь переменная displayMessage получает ссылку на функцию display до ее переопределения. Поэтому при вызове displayMessage() будет вызываться непереопределенная версия функции display.

Но допустим, мы определили переменную displayMessage уже после вызова функции display:

// Доброе утро
display(); 
// Добрый день
display(); 
var displayMessage = display;
// Добрый день
displayMessage();
// Добрый день 
displayMessage();

В этом случае переменная displayMessage будет указывать на переопределенную версию функции display.

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг