Переопределение функций
Функции обладают возможностью для переопределения поведения. Переопределение происходит с помощью присвоения анонимной функции переменной, которая называется так же, как и переопределяемая функция:
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;