@helpmeplease196

Почему в одном коде переменная, объявленная внутри функции не работает, а в другом работает?

Заранее прошу прошение, если путанно излагаю.
1) есть код
let form = document.getElementById("form")

form.addEventListener("submit", function(){
 Let fom  = document.getElementById("fom").value
alert(fom)
})

Если let fom обявить внутри функции, то она не работает. Как я поняла, это потому что если переменную объявить внутри функции, то она невидима для всего кода вне функции, но ведь в данном случае я обращаюсь к ней только внутри самой функции через alert. Тогда почему не работает?

2) Так же есть другая похожая функция, делающая тоже самое(передает значение из поля таблицы в переменую js), но с чуть большим количеством шагов, тут переменная тоже объявляется внутри функции, но все работает:
let form = document.getElementById("form")
form.addEventListener("submit", function(){
  let form = document.getElementById("form")
let name = form.querySelector('[name="name"]')
let value = name.value
alert(value)
})


3) этот вопрос решается изучением темы "область видимости"?

HTML в обоих случаях одинаковый:
<form id="form" >
    <label for="form">Имя</label>
    <input type="text" name="name"  value="sdf"  id="fom">
    <input type="submit" id="button"> 
</form>
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
SeaInside
@SeaInside
15 лет пилю все эти штуки
`let` !== `Let`, названия ключевых конструкций языка - регистрозависимые и сЛаВа бОгУ.

P.S. Поймал себя на мысли, что вообще никогда не пытался их писать хотя бы даже с заглавной буквы.

P.P.S. Иногда (всегда) ошибка нужна не только для того, чтобы понять, что программа не работает, а ещё и для того, чтобы понять, почему.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gazes12
@gazes12
Есть несколько вариантов, как получить переменную извне, созданную в функции, один из таких варинтов, использовать return название переменной.
Потом извне вызывать ее так: alert(название функции, где использовался return).

function returnValue(){
  let value = 123;
  return value;
}

alert( returnValue() ); /*выводит 123*/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы