File tree 1 file changed +30
-0
lines changed
1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @description - Реализация кэширование сохранение результата функции, которая определена в замыкание
3
+ * Функция может любой, но она должна быть чистой и всегда возвращать одни и те же значения в ответ на одни и те же аргументы.
4
+ * @param {Function } fn
5
+ * @returns
6
+ */
7
+ function caching ( fn ) {
8
+ const cach = { }
9
+ return function ( n ) {
10
+ if ( ! cach [ n ] ) {
11
+ let result = fn ( n )
12
+ console . log ( 'Добавляю в кэш:' , result )
13
+ cach [ n ] = result
14
+ return result ;
15
+ }
16
+ console . log ( 'Беру из кэша:' , cach [ n ] )
17
+ return cach [ n ]
18
+ } ;
19
+ }
20
+
21
+ const cachMyFunction = caching ( ( n ) => Math . pow ( n , 3 ) )
22
+
23
+ cachMyFunction ( 3 )
24
+ cachMyFunction ( 5 )
25
+ cachMyFunction ( 6 )
26
+ cachMyFunction ( 3 )
27
+ cachMyFunction ( 5 )
28
+ cachMyFunction ( 6 )
29
+ cachMyFunction ( 10 )
30
+ cachMyFunction ( 12 )
You can’t perform that action at this time.
0 commit comments