@The_good_game

Почему внутренняя функция не имеет доступа к переменной из внешнего окружения?

День добрый. Не могу понять, почему функция powFunct при вызове pressPower() получает localNumber === undefined? По задумке она должна возвращать какое-либо число.

let array     = [];
let number    = "";
let powerTrue = false;

let pressPower = function() {
  let localNumber;
  return function() {
    if (powerTrue) {
      return localNumber;
    }
    localNumber = inputs[0].value; //присваиваем localNumber числовое значение
    Iterations(inputs, '0', true); // проходит циклом по inputs
    powerTrue = true;
    return;
  }
}

power.addEventListener('mousedown', pressPower());

function pressEquals() {
  if (powerTrue) {
    powFunct()
  }
}

function powFunct() {
  n = inputs[0].value;
  number = pressPower() ** n; // pressPower() не видит localNumber
  (!array.length) ? array[0] = number: array[array.length - 1] = number;
  number = '';
  Iterations(inputs, array[array.length - 1], true); // проходит циклом по inputs
  powerTrue = false;
}
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
@L1nks
Когда внутри функции powFunct вы вызываете pressPower, то она вам возвращает функцию, а не какое то значение.
Вы можете попробовать сделать так:
number = pressPower()() ** n;
Либо для начала создать новую переменную и туда передать новую функции из pressPower. И как заметили в комментариях, не хватает логики, откуда берется инпут например
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы