= () => {
                  
                  
                   const num = { a: 1 };
                  
                  
                   return function (): number {
                  
                  
                    const b = num.a;
                  
                  
                    num.a = 2;
                  
                  
                    return b + 1;
                  
                  
                   };
                  
                  
                  };
                  
                  
                  
                  
                  
                  console.log(test()()); // 2
                  
                  
                  
                  
                  
                  почему ссылка теряется кто-то может объяснить?
                  
                  
                
Переменной num нет во внутренней функции, поэтому идём во внешнюю и ищем её там. Находим, забираем значение поля "а" = 1, затем добавляем к нему 1 - возвращаем 2. Думаю, если поменять первые две строчки во вложенной функции местами, то вернётся 3.
ну это понятно, а почему ссылка то пропала. мы присвоили переменной b ссылку? или как это работает
Нет, ты же читаешь значение из num.a, ссылку бы ты присвоил если бы объект там был, а у тебя там примит(число), оно присваивается к b по значению
Обсуждают сегодня