Автор оригинала: 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/”