Рубрики
Без рубрики

Не может передавать входное значение в переменной JavaScript

Представьте себе следующий сценарий – у вас есть простой вход и кнопка. Когда пользователь наносится на вход и нажимает кнопку, текст от входа должен регистрироваться в консоль. Вот что у вас есть до сих пор:

Автор оригинала: FreeCodeCamp Community Member.

Представьте себе следующий сценарий – у вас есть простой вход и кнопка. Когда пользователь наносится на вход и нажимает кнопку, текст от входа должен регистрироваться в консоль.

Вот что у вас есть до сих пор:




function myFunction() {
  const test = document.getElementById("search").value;
}

console.log(test);

Но когда вы загружаете страницу, вы видите Uncaught ShareError: тест не определен в консоли.

Что происходит здесь, и почему вы не можете получить доступ к Тест Переменная за пределами Myфункция ?

Область применения в JavaScript

Причина, по которой вы не можете получить доступ к Тест за пределами Myфункция связано с Область Отказ Еще один способ описать прицел – это контекст.

Потому что Тест был определен или создан в пределах Myфункция , это доступно только в контексте или объеме Myфункция сам. Пытаясь войти в систему Тест за пределами Myфункция приведет к ошибке.

Еще один способ поставить это то, что Тест Переменная зависит от определенной функции и может быть зарегистрирована только из-за Myфункция Отказ

Простой способ исправить это для регистрации Тест изнутри Myфункция . Затем, когда нажата кнопка, текущее значение входа будет зарегистрировано в консоль:

function myFunction() {
  const test = document.getElementById("search").value;
  console.log(test);
}

Вы можете узнать больше о Scope в JavaScript здесь: Введение в объем в JavaScript

Как получить доступ к переменной вне функции

Хотя невозможно напрямую получить доступ к функции, находящейся на определенной переменной функции из-за пределов функции, которую она была определена, есть некоторые способы использования значения Тест на протяжении всей остальной части программы.

Хранить значение теста как глобальную переменную

Глобальный объем – это самый верхний уровень вашей программы, за пределами всех других функций. Переменные в глобальном объеме доступны на протяжении всей остальной части вашей программы.

Так что простой способ сделать Тест Доступно везде – сохранить его как глобальную переменную. Например:

let test = '';

function myFunction() {
  test = document.getElementById("search").value;
}

function myOtherFunction() {
  console.log(test);
}

Тогда вы сможете получить доступ к значению Тест Когда MyOtherfunction называется. Но это предполагает, что вход уже есть текст в нем, и что Myфункция , какой установлен ценность Тест , называется до MyOtherfunction Отказ

Вот где твердое понимание асинхронного JavaScript пригодится. Подробнее об этом в этой статье: Эволюция async JavaScript: от обратных вызовов, обещаниям, async/ждать

Вернуть тест от функции

Еще один способ получить доступ к Тест С внешней оригинальной функции определяется, это просто вернуть ее из этой функции. Затем, когда вы называете его из другой функции, у вас будет доступ к Тест Отказ

Затем вы можете создать другую кнопку, чтобы добавить значение Тест на страницу и прикрепить MyOtherfunction к этой кнопке.

Например:





function myFunction() {
  const test = document.getElementById("search").value;
  return test;
}

function myOtherFunction() {
  const myDiv = document.getElementById("alpha");
  myDiv.innerText = myFunction();
}

И вот это в действии:

Оригинал: “https://www.freecodecamp.org/news/cant-pass-an-input-value-into-a-javascript-variable/”