generated from hexlet-basics/exercises-template
-
Notifications
You must be signed in to change notification settings - Fork 3
/
description.ru.yml
85 lines (62 loc) · 5.34 KB
/
description.ru.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
---
name: Необязательные параметры функций
theory: |
В программировании большое количество функций и методов имеют параметры, которые редко меняются. В таких случаях этим параметрам задают значения по умолчанию, которые можно поменять по необходимости. Этим немного сокращается количество одинакового кода. Пример:
```javascript
// Функция возведения в степень
// Второй параметр имеет значение по умолчанию 2
const pow = (x, base = 2) => {
return x ** base;
};
// 3 во второй степени (двойка задана по умолчанию)
pow(3); // 9
// три в третьей степени
pow(3, 3); // 27
```
https://replit.com/@hexlet/js-basics-define-functions-default-parameters
Значение по умолчанию выглядит как обычное присваивание в определении. Оно срабатывает только в том случае, если аргумент не передан. К этому нужно привыкнуть. Значение по умолчанию может быть даже в том случае, когда параметр один:
```javascript
const print = (text = 'nothing') => console.log(text);
print(); // "nothing"
print("Hexlet"); // Hexlet
```
Параметров со значениями по умолчанию может быть сколько угодно:
```javascript
const f = (a = 5, b = 10, c = 100) => { ... }
```
У значений по умолчанию есть одна особенность - они должны идти в самом конце списка параметров. Значения, передаваемые функции при вызове, всегда записываются в параметры слева направо, в том порядке, в котором они переданы. Получается, что если значения по умолчанию идут слева в списке параметров, перед обычными параметрами, то при вызове функции с какими-либо аргументами на место значений по умолчанию встанут значения аргументов. Например:
```javascript
// Вызовем эту функцию со следующими аргументами: f(1, 2, 3)
const f = (a = 5, b = 10, c = 100, x) => { ... }
// параметры получат следующие значения: а = 1, b = 2, c = 3, x = undefined
// в x мы ничего не передали, и JS присвоил ему значение undefined
// Именно поэтому параметры со значением по умолчанию должны идти справа от обычных,
// иначе они либо будут перезаписаны, либо обычный параметр может остаться без значения
// Вызываем функцию, f(1, 2)
const f = (a = 5, x, b = 10, c = 100) => { ... }
// a = 1, x = 2, остальные параметры получают значения по умолчанию
// Здесь всё хорошо, никаких неожиданностей
const f = (x, a = 5, b = 10, c = 100) => { ... }
// И здесь
const f = (x, y, a = 5, b = 10, c = 100) => { ... }
```
instructions: |
Реализуйте функцию `getHiddenCard()`, которая принимает на вход номер кредитки (состоящий из 16 цифр) в виде строки и возвращает его скрытую версию, которая может использоваться на сайте для отображения. Если исходная карта имела номер *2034399002125581*, то скрытая версия выглядит так *\*\*\*\*5581*. Другими словами, функция заменяет первые 12 символов, на звездочки. Количество звездочек регулируется вторым необязательным параметром. Значение по умолчанию — 4.
```javascript
// Кредитка передается внутрь как строка
getHiddenCard('1234567812345678', 2); // **5678
getHiddenCard('1234567812345678', 3); // ***5678
getHiddenCard('1234567812345678'); // ****5678
getHiddenCard('2034399002121100', 1); // *1100
```
Для выполнения задания вам понадобится метод строки `repeat()`, который повторяет строку указанное количество раз
```javascript
'+'.repeat(5); // +++++
'o'.repeat(3); // ooo
```
tips:
- |
[Параметры по умолчанию](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/Default_parameters)
definitions:
- name: Параметр по умолчанию
description: необязательный параметр функции