§05. Функции.
Функция – код, который выделен в отдельный блок и имеет своё собственное уникальное имя (имя функции). Для того, что бы этот код был выполнен, необходимо написать имя функции в нужном месте. Когда имя функции встречается в коде, говорят, что функция была вызвана.
Назначение функции заключается в том, что бы часть кода, которая должна повторяться неоднократно, объединить в один блок. При этом вызов этого блока будет осуществляться по имени функции.
Использование функций позволяет сократить количество кода. Так же существует возможность использовать чужие готовые функции. Так, например, операции Math.random и document.write тоже являются функциями, которыми мы успешно пользуемся, хотя они были написаны не нами.
Определение функции.
Для того, что бы функцию можно было вызвать её нужно определить. Определить – значит написать код, который должен быть выполнен при вызове функции. Определяется функция следующим образом: пишется зарезервированное слово function, после которого указывается имя функции, после чего ставятся круглые скобки. После всего этого в фигурных скобках пишется код функции. Данный код в фигурных скобках, как правило, называют телом функции. Пример:
<script>
function my_Function()
{
document.write('<br>');
document.write('Была вызвана функция my_Function');
document.write('<br>');
};
for (var count = 1;count<6; count = count+1)
my_Function();
</script>
Как видите, в данном примере функция my_Function была вызвана с помощью цикла счётчика 5 раз. При этом весь код занял 8 строчек. Для сравнения можете записать программу с таким же результатом работы без использования функции и цикла. У вас получится 15 строчек кода.
Обратите внимание на то, что при вызове функции наличие круглых скобок после её имени обязательно.
В отличие от некоторых других языков программирования в JavaScript вызывать функцию можно как после, так и до её определения. Пример:
<script>
for (var count = 1;count<6; count = count+1)
my_Function();
function my_Function()
{
document.write('<br>');
document.write('Была вызвана функция my_Function');
document.write('<br>');
};
</script>
Результат работы программы останется прежним.
Передаваемые аргументы.
Для работы функции можно передавать некоторые данные, которые в программировании называются аргументами. Прежде чем описать механизм их передачи, приведём пример, в котором функция bold_write выводит в окно браузера строку жирным шрифтом:
<script>
function bold_write(string)
{
document.write('<b>');
document.write(string);
document.write('</b>');
};
bold_write('Привет всем!');
</script>
Для того, что бы функция смогла принимать аргумент, при её определении необходимо в круглых скобках после её имени указать имя переменной, в которую будет записываться значение передаваемого параметра. В данном примере это переменная string. Далее в коде функции этой переменной можно пользоваться как любой другой.
Для того, что бы передать аргумент, необходимо при вызове функции в круглых скобках указать его значение. В данном примере аргументом является строка «Привет всем!».
Для передачи аргумента можно использовать и переменную. В таком случае значение этой переменной и будет передано в качестве аргумента. Пример:
<script>
function bold_write(string)
{
document.write('<b>');
document.write(string);
document.write('</b>');
};
var str = 'Привет всем!';
bold_write(str);
</script>
Результат работы программы остался прежним.
Передача нескольких аргументов.
Для того, что бы функция могла принимать несколько аргументов, необходимо при её определении в круглых скобках указать несколько переменных через запятую, которые эти параметры будут принимать.
При вызове функции для передачи нескольких аргументов необходимо указать их значения через запятую в круглых скобках. Пример:
<script>
function summ_write(x1,x2)
{
var summ;
summ = x1+x2;
document.write(x1,'+',x2,'=',summ);
};
summ_write(2,4);
</script>
Обратите внимание на шестую строчку кода:
document.write(x1,'+',x2,'=',summ);
Операция document.write тоже является функцией. Поэтому ей можно так же передавать несколько аргументов через запятую, что и было сделано в этом примере. Теперь в целях сокращения кода вы тоже можете передавать этой операции по несколько аргументов сразу.
Возвращение результата функцией.
Любая функция может возвращать какой-либо результат, точно так же, как и операция Math.random. Для этого существует слово return, которое необходимо указать в коде функции, и после которого указывается возвращаемое значение. Пример:
<script>
function summ(x1,x2)
{
return x1+x2;
};
document.write('2+3=',summ(2,3));
</script>
Здесь есть один нюанс: слово return заканчивает работу функции, поэтому если это слово встретится в середине кода функции, то в этом месте она прекратит своё выполнение. Поэтому это слово можно использовать и без возвращаемого значения для досрочного выхода из функции.
Задачи.
1. Написать функцию, выводящую в окно браузера строку в виде заголовка.
2. Написать функции, вычисляющие: суму трёх чисел; разность двух, трёх чисел; произведение двух, трёх чисел; частное двух чисел; квадрат, куб числа.
3. Написать функцию, вычисляющую факториал числа. Примечание: для решения данной задачи можете воспользоваться алгоритмом работы программы из предыдущего параграфа, которая вычисляет факториал числа 5.
4. Написать функцию, которая выдаёт случайное целое число от 0 до 100. Для этого вам потребуется функция Math.random, которая округляет число до целого значения.
5. Написать функцию, которая выдаёт случайное целое число A в диапазоне от X до Y. Воспользуйтесь следующей формулой:
, где Z – случайное число от 0 до 100 (см. предыдущую задачу). Примечание: не забудьте число A округлить.
6. Написать функцию, которая выводит в окно браузера два слова по алфавиту.
Примеры решений.
3.
<script>
function Fact(x)
{
var fact = 1;
for (var count = 2; count < (x+1); count = count + 1)
{
fact = fact*count;
}
return fact;
}
document.write('Факториал числа 5 равен ',Fact(5));
</script>
4.
<script>
function int_random()
{
return Math.round(Math.random()*100);
}
document.write('Случайное число от 0 до 100: ',int_random());
</script>
5.
<script>
function int_random_range(X,Y)
{
return Math.round((Math.random()*100)*(Y-X)/100)+X;
}
document.write('Случайное число от 50 до 70: ',int_random_range(50,70));
</script>
6.
<script>
function write_alph(str_1,str_2)
{
if (str_1<str_2)
document.write(str_1,', ',str_2,'.')
else
document.write(str_2,', ',str_1,'.');
}
document.write('Имеем два слова Лес и Дом. По алфавиту будет так - ');
write_alph('Лес','Дом');
</script>