Функции
function showMessage() {
alert('Hello World!');
}
showMessage();
Объявление
var randomNumber = Math.floor(Math.random() * 6) + 1;
На примере
Возврат значения
function getMessage() {
return 'Hello World!';
}
var message = getMessage();
alert( message );
Директива return может также использоваться без значения, чтобы прекратить выполнение и выйти из функции.
Возврат значения
function noMessage() {
return;
alert('Hello World!');
}
noMessage();
Директива return прекращает выполнение и выходит из функции.
function getMessage() {
return 'Hello', 'Beetroot', 'Students', 5; // вернет 5
}
Вы не можете вернуть сразу несколько значений
Локальные переменные
function showMessage() {
var message = 'Hello World!'; // локальная переменная
alert(message);
}
showMessage(); // 'Hello World!'
alert(message); // будет ошибка, т.к. переменная видна только внутри
Область видимости
Внешние переменные
var userName = 'World';
function showMessage() {
var message = 'Hello ' + userName + '!';
alert(message);
}
showMessage(); // 'Hello World!'
Параметры
Параметры копируются в локальные переменные функции.
function showMessage(message, name) {
// параметры message, name
alert(message + ' ' + name + '!');
}
showMessage('Hello', 'World');
Перепишем функцию getRandom() с параметрами
function getRandom(){
var randomNumber = Math.floor(Math.random() * 6) + 1;
return randomNumber;
}
Аргументы по умолчанию
function showMessage(message, name) {
// параметры message, name
if (name === undefined) {
name = 'World';
}
// name = name || 'World';
alert(message + ' ' + name + '!');
}
showMessage('Hello', );
Возврат значения
function calculateArea( width, length ) {
return width * length;
}
calculateArea( 5, 4 ); // 20
calculateArea( 30, 4 ); // 120
var test = calculateArea(2, 2);
alert(test); // 4
Директива return может также использоваться без значения, чтобы прекратить выполнение и выйти из функции.
- В JavaScript функция является значением, таким же как строка или число.
- Функцию можно скопировать в другую переменную.
- Обычные значения, такие как числа или строки, представляют собой данные. А функцию можно воспринимать как действие.
function sayHey() {
alert( "Привет" );
}
alert( sayHey ); // выведет код функции
Function Declaration
Function Expression
// Function Declaration
function sum(a, b) {
return a + b;
}
// Function Expression
var sum = function(a, b) {
return a + b;
}
Основное отличие между ними: функции, объявленные как Function Declaration, создаются интерпретатором до выполнения кода.
if (age >= 18) {
function sayHi() {
alert('OK!');
}
} else {
function sayHi() {
alert('До 18 нельзя');
}
}
sayHi();
function sayHi() {
alert('OK');
}
function sayHi() {
alert('До 18 нельзя');
}
var age = 20;
if (age >= 18) {
/* объявление было обработано ранее */
sayHi()
} else {
/* объявление было обработано ранее */
sayHi()
}
sayHi(); // "До 18 нельзя", сработает всегда вторая функция
Анонимные функции
function ask(question, yes, no) {
if (confirm(question)) {
yes();
} else {
no();
}
}
function showOk() {
alert("Вы согласились.");
}
function showCancel() {
alert("Вы отменили выполнение.");
}
ask("Вы согласны?", showOk, showCancel);
function ask(question, yes, no) {
if (confirm(question)) {
yes();
} else {
no();
}
}
ask(
"Вы согласны?",
function() {
alert("Вы согласились.");
},
function() {
alert("Вы отменили выполнение.");
}
);
Функциональное выражение, которое не записывается в переменную, называют анонимной функцией.
Рекурсия
В теле функции могут быть вызываны другие функции для выполнения подзадач.
Частный случай подвызова – когда функция вызывает сама себя. Это называется рекурсией.
Степень pow(x, n) через рекурсию
pow(x, n) = x * pow(x, n - 1)
То есть, xn = x * xn-1
function pow(x, n) {
if (n != 1) { // пока n != 1, сводить вычисление pow(x,n) к pow(x,n-1)
return x * pow(x, n - 1);
} else {
return x;
}
}
alert( pow(2, 3) ); // 8
Итого
- Объявление функции имеет вид:
function имя(параметры, через, запятую) {
код функции
}
- Передаваемые значения копируются в параметры функции и становятся локальными переменными.
- Параметры функции копируются в её локальные переменные.
- Можно объявить новые локальные переменые при помощи var.
- Значение возвращается оператором return ....
- Вызов return тут же прекращает функцию.
- Если return; вызван без значения, или функция завершилась без return, то её результат равен undefined.
JavaScript - Функции
By Alexey Kalyuzhnyi
JavaScript - Функции
- 2,570