├── index.html
└── src
└── js
└── index.js
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 | HW10-js-closure
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/js/index.js:
--------------------------------------------------------------------------------
1 | console.log('------------- #3')
2 | function sum (a) {
3 | let result = a
4 | return function (b) {
5 | return result += b
6 | }
7 | }
8 |
9 | let sum1 = sum(1)
10 | console.log(sum1(2))
11 | console.log(sum(1)(2))
12 |
13 | console.log('------------- #4')
14 | /** Первый вариант
15 | *
16 | * При испольвании var выделяется одна ячейка памяти,
17 | * при использовании let выделяется ячейка под каждую итерацию, ES6)
18 | */
19 | /*
20 | for (let i = 1; i <= 10; i++) {
21 | setTimeout(function() {
22 | console.log(i);
23 | }, 0);
24 | }
25 | */
26 |
27 | /** Второй вариант
28 | *
29 | * Ошибка из-за того что лексическое окружение создается один раз,
30 | * i будет присвоено последнее значение из цикла
31 | */
32 | for (var i = 1; i <= 10; i++) {
33 | setTimeout(print(i))
34 | }
35 |
36 | function print(i) {
37 | let count = i
38 | return function () {
39 | console.log(count)
40 | }
41 | }
42 |
43 | /** Третий вариант
44 | *
45 | * Не совсем мне понятный, хотелось бы узнать как это работает, что за конструкция + i + ?
46 | */
47 | /*
48 | for (var i = 1; i <= 10; i++) {
49 | setTimeout('console.log('+ i +')', 0);
50 | }*/
51 |
--------------------------------------------------------------------------------