Курс по JavaScript для начинающих: Модуль 4. Функции. Урок 1. Объявление и вызов функций

Курс по JavaScript для начинающих: Модуль 4. Функции. Урок 1. Объявление и вызов функций

Введение

Функции являются одним из важнейших инструментов в программировании. Они позволяют организовать код, сделать его более модульным и повторно используемым. В этом уроке мы рассмотрим, как объявлять и вызывать функции в 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
Оставить комментарий

Комментарии

CommentsEmpty

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *