§05. Функции.

Учимся программировать вместе с JavaScript
Глава I. Обо всём понемногу.

§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>