├── 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 | --------------------------------------------------------------------------------