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
