JavaScript: Необязательные параметры функций
Функции могут принимать параметры. Иногда удобно задать значение сразу в определении функции, чтобы не указывать его при каждом вызове. Такое значение называется значением по умолчанию.
Если аргумент не передан, используется это значение. Если аргумент указан, он заменяет умолчание.
function greet(name = "World") {
console.log(`Hello, ${name}!`);
}
greet("Alice"); // => Hello, Alice!
greet(); // => Hello, World! (использовано значение по умолчанию)Пример: повторение текста
Сделаем функцию, которая повторяет строку несколько раз. По умолчанию пусть будет один раз, но при желании можно указать другое количество. Для повторения строки в JavaScript есть метод repeat():
function repeat(text, times = 1) {
return text.repeat(times);
}
console.log(repeat("Hi")); // => Hi
console.log(repeat("Hi", 3)); // => HiHiHifunction repeat(text, times = 1) ← times имеет значение по умолчанию
repeat('go') → times = 1 (по умолчанию)
repeat('go', 5) → times = 5 (явно указано)Необязательные параметры всегда указываются в конце списка. Поэтому сначала идёт обязательный параметр text, а уже после него — times со значением по умолчанию.
Пример: склейка слов с разделителем
По умолчанию слова соединяются пробелом, но можно указать другой символ:
function joinWords(word1, word2, separator = " ") {
return word1 + separator + word2;
}
console.log(joinWords("King", "Road")); // => King Road
console.log(joinWords("Dragon", "stone", "-")); // => Dragon-stoneПример: несколько параметров по умолчанию
Функция может содержать более одного параметра со значением по умолчанию. Сделаем функцию, которая строит строку-разделитель. По умолчанию символ — дефис, а длина равна 10:
function makeLine(symbol = "-", length = 10) {
return symbol.repeat(length);
}
console.log(makeLine()); // => ----------
console.log(makeLine("*")); // => **********
console.log(makeLine("*", 5)); // => *****
console.log(makeLine("#", 3)); // => ###Пример: скрытие номера карты
function getHiddenCard(cardNumber, starsCount = 4) {
return "*".repeat(starsCount) + cardNumber.slice(-4);
}
console.log(getHiddenCard("1234567890123456")); // => ****3456
console.log(getHiddenCard("1234567890123456", 2)); // => **3456Параметр starsCount по умолчанию равен 4, но можно передать другое значение.
Задание
Напишите функцию getHiddenCard(cardNumber, starsCount = 4), которая принимает номер карты (строку) и возвращает скрытый номер: звёздочки + последние 4 цифры.
getHiddenCard("1234567890123456"); // => '****3456'
getHiddenCard("1234567890123456", 2); // => '**3456'Используйте '*'.repeat(starsCount) и .slice(-4).
Полезное
JavaScript: Необязательные параметры функций
Функции могут принимать параметры. Иногда удобно задать значение сразу в определении функции, чтобы не указывать его при каждом вызове. Такое значение называется значением по умолчанию.
Если аргумент не передан, используется это значение. Если аргумент указан, он заменяет умолчание.
function greet(name = "World") {
console.log(`Hello, ${name}!`);
}
greet("Alice"); // => Hello, Alice!
greet(); // => Hello, World! (использовано значение по умолчанию)Пример: повторение текста
Сделаем функцию, которая повторяет строку несколько раз. По умолчанию пусть будет один раз, но при желании можно указать другое количество. Для повторения строки в JavaScript есть метод repeat():
function repeat(text, times = 1) {
return text.repeat(times);
}
console.log(repeat("Hi")); // => Hi
console.log(repeat("Hi", 3)); // => HiHiHifunction repeat(text, times = 1) ← times имеет значение по умолчанию
repeat('go') → times = 1 (по умолчанию)
repeat('go', 5) → times = 5 (явно указано)Необязательные параметры всегда указываются в конце списка. Поэтому сначала идёт обязательный параметр text, а уже после него — times со значением по умолчанию.
Пример: склейка слов с разделителем
По умолчанию слова соединяются пробелом, но можно указать другой символ:
function joinWords(word1, word2, separator = " ") {
return word1 + separator + word2;
}
console.log(joinWords("King", "Road")); // => King Road
console.log(joinWords("Dragon", "stone", "-")); // => Dragon-stoneПример: несколько параметров по умолчанию
Функция может содержать более одного параметра со значением по умолчанию. Сделаем функцию, которая строит строку-разделитель. По умолчанию символ — дефис, а длина равна 10:
function makeLine(symbol = "-", length = 10) {
return symbol.repeat(length);
}
console.log(makeLine()); // => ----------
console.log(makeLine("*")); // => **********
console.log(makeLine("*", 5)); // => *****
console.log(makeLine("#", 3)); // => ###Пример: скрытие номера карты
function getHiddenCard(cardNumber, starsCount = 4) {
return "*".repeat(starsCount) + cardNumber.slice(-4);
}
console.log(getHiddenCard("1234567890123456")); // => ****3456
console.log(getHiddenCard("1234567890123456", 2)); // => **3456Параметр starsCount по умолчанию равен 4, но можно передать другое значение.
Задание
Напишите функцию getHiddenCard(cardNumber, starsCount = 4), которая принимает номер карты (строку) и возвращает скрытый номер: звёздочки + последние 4 цифры.
getHiddenCard("1234567890123456"); // => '****3456'
getHiddenCard("1234567890123456", 2); // => '**3456'Используйте '*'.repeat(starsCount) и .slice(-4).
Полезное
Ваше упражнение проверяется по этим тестам
// @ts-check
import { expect, test } from "vitest";
import f from "./index.js";
test("default parameters", () => {
expect(f("1234123412341234")).toEqual("****1234");
expect(f("1234123412344321")).toEqual("****4321");
expect(f("1234123412344321", 2)).toEqual("**4321");
expect(f("1234123412341234", 12)).toEqual("************1234");
});Решение учителя откроется через:
20:00
