Курс по JavaScript для начинающих: Модуль 4. Функции. Урок 2. Параметры и аргументы функции

Курс по JavaScript для начинающих: Модуль 4. Функции. Урок 2. Параметры и аргументы функции

Введение

Функции в JavaScript позволяют передавать данные через параметры и аргументы. Параметры и аргументы функций — это важный аспект программирования, который позволяет сделать функции более гибкими и повторно используемыми. В этом уроке мы рассмотрим, как объявлять параметры, передавать аргументы и работать с ними внутри функций.

Что такое параметры и аргументы

  • Параметры — это переменные, которые указаны в объявлении функции и используются для получения данных.
  • Аргументы — это значения, которые передаются функции при ее вызове и присваиваются параметрам.

Пример:

function greet(name) { // 'name' - это параметр
    console.log("Привет, " + name + "!");
}

greet("Иван"); // 'Иван' - это аргумент

Объявление параметров

Параметры объявляются внутри круглых скобок при определении функции. Можно объявить несколько параметров, разделяя их запятыми.

Пример функции с несколькими параметрами:

function sum(a, b) {
    return a + b;
}

Пример вызова функции с аргументами:

let result = sum(3, 4); // 3 и 4 - это аргументы
console.log(result); // 7

Значения по умолчанию для параметров

В ES6 была введена возможность задавать значения по умолчанию для параметров. Если аргумент не передан при вызове функции, будет использоваться значение по умолчанию.

Пример значения по умолчанию:

function greet(name = "гость") {
    console.log("Привет, " + name + "!");
}

greet(); // Привет, гость!
greet("Анна"); // Привет, Анна!

Параметры rest (остаточные параметры)

Остаточные параметры позволяют функции принимать неопределенное количество аргументов и собирать их в массив.

Пример использования остаточных параметров:

function sumAll(...numbers) {
    let sum = 0;
    for (let num of numbers) {
        sum += num;
    }
    return sum;
}

console.log(sumAll(1, 2, 3)); // 6
console.log(sumAll(4, 5, 6, 7)); // 22

Псевдомассив arguments

Функции в JavaScript имеют специальный объект arguments, который содержит все переданные функции аргументы. Это полезно для функций, которые могут принимать переменное количество аргументов.

Пример использования объекта arguments:

function sumAll() {
    let sum = 0;
    for (let i = 0; i < arguments.length; i++) {
        sum += arguments[i];
    }
    return sum;
}

console.log(sumAll(1, 2, 3)); // 6
console.log(sumAll(4, 5, 6, 7)); // 22

Заключение

Параметры и аргументы позволяют функциям работать с данными, передаваемыми при вызове. Понимание того, как объявлять параметры, передавать аргументы и использовать значения по умолчанию, остаточные параметры и объект arguments, помогает сделать функции более гибкими и мощными.


Контрольные вопросы

Что такое параметры функции в JavaScript?

  • Переменные, указанные в объявлении функции для получения данных.
  • Значения, передаваемые функции при ее вызове.
  • Блоки кода, выполняемые внутри функции.
  • Значения, возвращаемые функцией.

Что такое аргументы функции в JavaScript?

  • Переменные, указанные в объявлении функции.
  • Значения, передаваемые функции при ее вызове.
  • Блоки кода, выполняемые внутри функции.
  • Значения, возвращаемые функцией.

Как задать значение по умолчанию для параметра функции?

  • Указать значение после имени параметра в объявлении функции.
  • Передать значение при вызове функции.
  • Использовать оператор ||.
  • Использовать метод default.

Какой результат будет у функции greet, если вызвать ее без аргументов, если параметр name имеет значение по умолчанию «гость»?

  • Привет, мир!
  • Привет, гость!
  • Привет, undefined!
  • Произойдет ошибка.

Как собрать неопределенное количество аргументов в массив внутри функции?

  • Использовать оператор ||.
  • Использовать остаточные параметры ....
  • Использовать метод Array.from.
  • Использовать объект arguments.

Что такое объект arguments в функции?

  • Специальный объект, содержащий все переданные функции аргументы.
  • Объект, возвращаемый функцией.
  • Объект, содержащий параметры функции.
  • Специальный объект, содержащий значения по умолчанию для параметров.

Как использовать остаточные параметры в объявлении функции?

  • function myFunc(...args) { // код }
  • function myFunc(args...) { // код }
  • function myFunc([args]) { // код }
  • function myFunc(args) { // код }

Упражнения

Практическое задание 1: Нахождение наибольшего общего делителя

Создайте функцию gcd, которая принимает два числа и возвращает их наибольший общий делитель (НОД) с использованием алгоритма Евклида.

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

Практическое задание 2: Возведение в степень

Создайте функцию 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

Практическое задание 3: Простейший калькулятор

Создайте функцию calculator, которая принимает три параметра: два числа и строку, представляющую операцию ('add', 'subtract', 'multiply', 'divide'). Функция должна возвращать результат выполнения указанной операции над двумя числами.

function calculator(a, b, operation) {
    if (operation === 'add') {
        return a + b;
    } else if (operation === 'subtract') {
        return a - b;
    } else if (operation === 'multiply') {
        return a * b;
    } else if (operation === 'divide') {
        return a / b;
    } else {
        return "Invalid operation";
    }
}

console.log(calculator(10, 5, 'add')); // 15
console.log(calculator(10, 5, 'subtract')); // 5
console.log(calculator(10, 5, 'multiply')); // 50
console.log(calculator(10, 5, 'divide')); // 2

Практическое задание 4: Перевод числа в строку и обратно

Создайте функцию numberToString и stringToNumber, которые принимают число и строку соответственно и возвращают строку и число.

function numberToString(num) {
    return '' + num;
}

function stringToNumber(str) {
    return +str;
}

console.log(numberToString(123)); // "123"
console.log(stringToNumber("456")); // 456

Практическое задание 5: Проверка на четность

Создайте функцию isEven, которая принимает число и возвращает true, если число четное, и false в противном случае.

function isEven(num) {
    return num % 2 === 0;
}

console.log(isEven(4)); // true
console.log(isEven(7)); // false

Практическое задание 6: Простейший шифр Цезаря

Создайте функцию caesarCipher, которая принимает строку и число (сдвиг), и возвращает зашифрованную строку, где каждая буква сдвинута на указанное количество позиций в алфавите.

function caesarCipher(str, shift) {
    let result = '';
    for (let i = 0; i < str.length; i++) {
        let charCode = str.charCodeAt(i);
        if (charCode >= 65 && charCode <= 90) { // Uppercase letters
            result += String.fromCharCode((charCode - 65 + shift) % 26 + 65);
        } else if (charCode >= 97 && charCode <= 122) { // Lowercase letters
            result += String.fromCharCode((charCode - 97 + shift) % 26 + 97);
        } else {
            result += str[i];
        }
    }
    return result;
}

console.log(caesarCipher("hello", 3)); // "khoor"
console.log(caesarCipher("abc", 1)); // "bcd"

Практическое задание 7: Проверка високосного года

Создайте функцию isLeapYear, которая принимает год и возвращает true, если год високосный, и false в противном случае.

function isLeapYear(year) {
    if (year % 4 === 0) {
        if (year % 100 === 0) {
            if (year % 400 === 0) {
                return true;
            }
            return false;
        }
        return true;
    }
    return false;
}

console.log(isLeapYear(2020)); // true
console.log(isLeapYear(1900)); // false
console.log(isLeapYear(2000)); // true

Практическое задание 8: Нахождение корня уравнения методом деления пополам

Создайте функцию findRoot, которая находит корень линейного уравнения вида ax + b = 0 методом деления пополам.

function findRoot(a, b) {
    let left = -1000, right = 1000, mid;
    while (right - left > 1e-7) {
        mid = (left + right) / 2;
        if (a * mid + b === 0) {
            return mid;
        } else if (a * mid + b < 0) {
            left = mid;
        } else {
            right = mid;
        }
    }
    return mid;
}

console.log(findRoot(2, -4)); // 2 (приблизительно)
console.log(findRoot(1, -3)); // 3 (приблизительно)

Практическое задание 9: Генерация случайного числа

Создайте функцию randomInRange, которая принимает два числа min и max, и возвращает случайное целое число в этом диапазоне (включительно).

function randomInRange(min, max) {
    return Math.floor(min + Math.random() * (max - min + 1));
}

console.log(randomInRange(1, 10)); // случайное число от 1 до 10
console.log(randomInRange(20, 30)); // случайное число от 20 до 30

Практическое задание 10: Проверка простого числа без использования Math

Создайте функцию isPrime, которая принимает число и возвращает true, если число является простым, и false в противном случае.

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
Оставить комментарий

Комментарии

CommentsEmpty

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

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