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');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 может также использоваться без значения, чтобы прекратить выполнение и выйти из функции.
function sayHey() {
alert( "Привет" );
}
alert( sayHey ); // выведет код функции
// 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) ); // 8function имя(параметры, через, запятую) {
код функции
}