Введение
Функции являются одним из важнейших инструментов в программировании. Они позволяют организовать код, сделать его более модульным и повторно используемым. В этом уроке мы рассмотрим, как объявлять и вызывать функции в JavaScript.
Что такое функция?
Функция — это блок кода, который выполняет определенную задачу и может быть вызван в любом месте программы. Функции помогают структурировать и организовать код, делая его более читаемым и поддерживаемым.
Основные преимущества функций:
- Повторное использование кода: Функции можно вызывать несколько раз с различными параметрами.
- Организация кода: Функции позволяют разбить программу на логические блоки.
- Модульность: Функции упрощают отладку и тестирование кода.
Объявление функции
Функции в JavaScript могут быть объявлены несколькими способами: используя ключевое слово function
, стрелочные функции и функциональные выражения.
Объявление функции с использованием ключевого слова function
Синтаксис объявления функции:
function имяФункции(параметры) {
// тело функции
}
Пример объявления функции:
function greet() {
console.log("Привет, мир!");
}
Функции с параметрами
Функции могут принимать параметры, которые используются для передачи данных внутрь функции.
Пример функции с параметрами:
function greet(name) {
console.log("Привет, " + name + "!");
}
Вызов функции
После объявления функцию можно вызывать в любом месте программы.
Синтаксис вызова функции:
имяФункции(аргументы);
Пример вызова функции:
greet("Иван");
Особенности:
- При вызове функции с параметрами необходимо передать аргументы, соответствующие параметрам.
Возвращаемое значение
Функции могут возвращать значения с помощью оператора return
. Возвращаемое значение можно сохранить в переменной или использовать напрямую.
Пример функции с возвращаемым значением:
function sum(a, b) {
return a + b;
}
let result = sum(3, 4);
console.log(result); // 7
Стрелочные функции
Стрелочные функции — это более краткий синтаксис для объявления функций. Они особенно удобны для написания коротких функций.
Синтаксис стрелочной функции:
const имяФункции = (параметры) => {
// тело функции
};
Пример стрелочной функции:
const greet = (name) => {
console.log("Привет, " + name + "!");
};
greet("Анна");
Функциональные выражения
Функциональные выражения позволяют объявлять функции внутри других выражений. Они могут быть анонимными (без имени) или именованными.
Пример анонимного функционального выражения:
const greet = function(name) {
console.log("Привет, " + name + "!");
};
greet("Олег");
Пример именованного функционального выражения:
const greet = function greetFunction(name) {
console.log("Привет, " + name + "!");
};
greet("Мария");
Особенности:
- Функциональные выражения не поднимаются (hoisting), поэтому их нужно объявлять перед вызовом.
Заключение
Функции являются основным строительным блоком в программировании на JavaScript. Они позволяют создавать модульный, читаемый и повторно используемый код. Понимание, как объявлять и вызывать функции, является важным навыком для любого разработчика.
Контрольные вопросы
Что такое функция в JavaScript?
- Блок кода, выполняющий определенную задачу, который можно вызывать в любом месте программы.
- Переменная, хранящая данные.
- Метод для создания объектов.
- Оператор для выполнения арифметических операций.
Как объявить функцию с использованием ключевого слова function?
function имяФункции(параметры) { // тело функции }
const имяФункции = (параметры) => { // тело функции }
let имяФункции = function(параметры) { // тело функции }
имяФункции(параметры) => { // тело функции }
Как вызвать функцию greet, принимающую параметр name?
greet(name);
function greet(name);
call greet(name);
invoke greet(name);
Какое ключевое слово используется для возврата значения из функции?
return
yield
break
exit
Что такое стрелочная функция?
- Более краткий синтаксис для объявления функции.
- Функция, выполняющая арифметические операции.
- Метод для создания объектов.
- Оператор для выполнения циклов.
Как объявить стрелочную функцию greet, принимающую параметр name?
const greet = (name) => { console.log("Привет, " + name + "!"); };
function greet(name) { console.log("Привет, " + name + "!"); }
let greet = function(name) { console.log("Привет, " + name + "!"); };
greet = (name) => { console.log("Привет, " + name + "!"); };
Как объявить анонимное функциональное выражение для функции greet, принимающей параметр name?
const greet = function(name) { console.log("Привет, " + name + " ! "); };
function greet(name) { console.log("Привет, " + name + "!"); }
const greet = (name) => { console.log("Привет, " + name + "!"); };
let greet = (name) => { console.log("Привет, " + name + "!"); };
Как объявить именованное функциональное выражение для функции greet, принимающей параметр name?
const greet = function greetFunction(name) { console.log("Привет, " + name + " ! "); };
function greet(name) { console.log("Привет, " + name + "!"); }
const greet = (name) => { console.log("Привет, " + name + "!"); };
let greet = (name) => { console.log("Привет, " + name + "!"); };
Упражнения
Практическое задание 1: Простое число
Создайте функцию isPrime
, которая принимает число и возвращает true
, если число является простым, и false
в противном случае. Реализуйте алгоритм без использования объекта Math.
function isPrime(num) {
if (num <= 1) {
return false;
}
for (let i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return true;
}
console.log(isPrime(7)); // true
console.log(isPrime(10)); // false
Практическое задание 2: Факториал числа
Создайте функцию factorial
, которая принимает число и возвращает его факториал.
function factorial(n) {
if (n === 0 || n === 1) {
return 1;
}
let result = 1;
for (let i = n; i > 1; i--) {
result *= i;
}
return result;
}
console.log(factorial(5)); // 120
console.log(factorial(7)); // 5040
Практическое задание 3: Числа Фибоначчи
Создайте функцию fibonacci
, которая принимает число n
и возвращает n
-е число Фибоначчи.
function fibonacci(n) {
if (n === 0) {
return 0;
} else if (n === 1) {
return 1;
}
let a = 0, b = 1, temp;
for (let i = 2; i <= n; i++) {
temp = a + b;
a = b;
b = temp;
}
return b;
}
console.log(fibonacci(10)); // 55
console.log(fibonacci(15)); // 610
Практическое задание 4: Проверка палиндрома
Создайте функцию isPalindrome
, которая принимает строку и возвращает true
, если строка является палиндромом, и false
в противном случае.
function isPalindrome(str) {
let reversed = '';
for (let i = str.length - 1; i >= 0; i--) {
reversed += str[i];
}
return str === reversed;
}
console.log(isPalindrome("radar")); // true
console.log(isPalindrome("hello")); // false
Практическое задание 5: Возведение в степень
Создайте функцию power
, которая принимает два числа, base
и exponent
, и возвращает результат возведения base
в степень exponent
.
function power(base, exponent) {
let result = 1;
for (let i = 0; i < exponent; i++) {
result *= base;
}
return result;
}
console.log(power(2, 3)); // 8
console.log(power(5, 4)); // 625
Практическое задание 6: Решение квадратного уравнения
Создайте функцию solveQuadratic
, которая принимает три коэффициента a
, b
и c
квадратного уравнения и возвращает его корни без использования объекта Math.
function solveQuadratic(a, b, c) {
let discriminant = b * b - 4 * a * c;
let root1, root2;
if (discriminant > 0) {
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
return [root1, root2];
} else if (discriminant === 0) {
root1 = -b / (2 * a);
return [root1];
} else {
return []; // Нет действительных корней
}
function sqrt(x) {
let guess = x / 2;
for (let i = 0; i < 10; i++) {
guess = (guess + x / guess) / 2;
}
return guess;
}
}
console.log(solveQuadratic(1, -3, 2)); // [2, 1]
console.log(solveQuadratic(1, -2, 1)); // [1]
console.log(solveQuadratic(1, 0, 1)); // []
Практическое задание 7: Наибольший общий делитель (НОД)
Создайте функцию gcd
, которая принимает два числа и возвращает их наибольший общий делитель (НОД) без использования объекта Math.
function gcd(a, b) {
while (b !== 0) {
let temp = b;
b = a % b;
a = temp;
}
return a;
}
console.log(gcd(56, 98)); // 14
console.log(gcd(48, 18)); // 6
Практическое задание 8: Сумма цифр числа
Создайте функцию sumDigits
, которая принимает число и возвращает сумму его цифр.
function sumDigits(num) {
let sum = 0;
while (num > 0) {
sum += num % 10;
num = Math.floor(num / 10);
}
return sum;
}
console.log(sumDigits(123)); // 6
console.log(sumDigits(456)); // 15
Практическое задание 9: Переворот числа
Создайте функцию reverseNumber
, которая принимает число и возвращает его цифры в обратном порядке.
function reverseNumber(num) {
let reversed = 0;
while (num !== 0) {
reversed = reversed * 10 + num % 10;
num = Math.floor(num / 10);
}
return reversed;
}
console.log(reverseNumber(123)); // 321
console.log(reverseNumber(456)); // 654
Практическое задание 10: Минимальное значение в массиве
Создайте функцию minArray
, которая принимает массив чисел и возвращает минимальное значение в этом массиве.
function minArray(arr) {
let min = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
console.log(minArray([3, 5, 1, 8, 2])); // 1
console.log(minArray([7, 4, 9, 6, 3])); // 3