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


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

function display(){

document.write("Доброе утро!" + '<br>');

display = function(){

document.write("Добрый день!");

}

}

 

display(); // Доброе утро!

display(); // Добрый день!

 

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

Передача параметров по значению

Строки, числа, логические значения передаются в функцию по значению, т.е. при передаче значения в функцию, эта функция получает копию данного значения. Рассмотрим пример:

function change(x){

x = 2 * x;

document.write(x);

}

 

let n = 10;

document.write (n); //10

change(n); // 20

document.write (n); // 10

 

Функция change получает некоторое число и увеличивает его в два раза. При вызове функции change ей передается число n. Однако после вызова функции мы видим, что число n не изменилось, хотя в самой функции произошло увеличение значения параметра. Потому что при вызове функция change получает копию значения переменной n и любые изменения с этой копией никак не затрагивают саму переменную n.

Планирование: setTimeout и setInterval

Мы можем вызывать функцию не в данный момент, а позже, через заданный интервал времени. Это называется планирование вызова. Для этого существуют два метода:

setTimeout –позволяет вызвать функцию один раз через определенный интервал времени.

setInterval –позволяет вызывать функцию регулярно, через определенный интервал.

Синтаксис метода setTimeout:

let timerId = setTimeout(func, [delay], [arg1], [arg2], …),где func – функция для выполнения, delay – задержка перед запуском в миллисекундах, arg – аргументы, передаваемые в функцию.

Пример:

function hello() {

alert('Привет');

}

setTimeout(hello, 1000);

Пример с аргументами:

function hello(text, name) {

alert( text + ', ' + name );

}

setTimeout(hello, 1000, "Привет", "Вася"); // Привет, Вася

 

Пример стрелочной функции

setTimeout(() => alert('Привет'), 1000);

Вызов setTimeout возвращает идентификатор таймера timerId, который можно использовать для отмены дальнейшего выполнения.

let timerId = setTimeout(...);

clearTimeout(timerId);

Метод setInterval имеет такой же синтаксис, как и setTimeout. Все аргументы имеют такое же значение. Отличие состоит в том, что функция будет запускаться не один раз, а периодически через указанный промежуток времени. Для остановка этого таймера используется функция clearInterval(timerId).

Пример вывода сообщения каждые 2 секунды и прекращение его вывода через 5 секунд:

let timerId = setInterval(() => alert('tick'), 2000);

 

// остановить вывод через 5 секунд

setTimeout(() => { clearInterval(timerId); alert('stop'); }, 5000);

 



Дата добавления: 2021-01-26; просмотров: 417;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.