Skip to content

Commit 9b42125

Browse files
committed
[LES-10.3/st-compl] return-functions
Practice with "higher-order/return" func's. Intro to "currying". Worth noting: - the concept of "lexical environment", like a "snapshot/backpack". FS-dev: B-3 / JS basic
1 parent f16c93c commit 9b42125

File tree

1 file changed

+52
-0
lines changed
  • full-stack-dev/3-js-basic/10-higher-order-functions/10-3-return-functions

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Задание 1:
2+
// Напиши функцию createLogger(prefix).
3+
// 1. Эта функция должна принимать один аргумент — строку prefix.
4+
// 2. Она должна возвращать новую функцию, которая, в свою очередь, принимает сообщение (message) и выводит в консоль строку в формате: [prefix] message.
5+
6+
function createLogger(prefix) {
7+
return function (message) {
8+
return `${prefix} ${message}`;
9+
};
10+
}
11+
12+
const errorLog = createLogger('[ERROR]');
13+
console.log(errorLog('Произошла ошибка в системе')); // "[ERROR] Произошла ошибка в системе"
14+
15+
const warningLog = createLogger('[WARNING]');
16+
console.log(warningLog('Внимание, память почти заполнена')); // "[WARNING] Внимание, память почти заполнена"
17+
18+
// Задание 2:
19+
// Напиши функцию inBetween(a, b).
20+
// Она должна принимать два числа, a и b, и возвращать новую функцию.
21+
// Эта новая функция должна принимать один аргумент x и возвращать true, если x находится между a и b (включая концы), и false в противном случае.
22+
// Главная цель — показать, как использовать её вместе с методом arr.filter().
23+
24+
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
25+
26+
function inBetween(a, b) {
27+
return function (x) {
28+
if (x >= a && x <= b) {
29+
return true;
30+
}
31+
32+
return false;
33+
};
34+
}
35+
36+
let filteredArr = arr.filter(inBetween(3, 6));
37+
console.log(filteredArr); // [3, 4, 5, 6]
38+
39+
// Задание 3:
40+
// Напиши каррированную функцию multiply.
41+
// Она должна позволять перемножать три числа вот таким образом: multiply(a)(b)(c).
42+
43+
function multiply(a) {
44+
return function (b) {
45+
return function (c) {
46+
return a * b * c;
47+
};
48+
};
49+
}
50+
51+
let result = multiply(2)(3)(4);
52+
console.log(result); // 24

0 commit comments

Comments
 (0)