Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialRosario Dawson
400 PointsUncaught ReferenceError: inputText is not defined
Error in the description. Here is the snap of the code:
As you can tell - I get an error from the title if I define my variables with const/let/var inside the - form.addEventListener("submit") - block of code.
If I define it outside of that functions scope, it works fine. Why?
Thanks!
3 Answers
Dane Parchment
Treehouse Moderator 11,077 PointsOk, your issue here is not understanding how variable scoping works with the es6 let
and const
variable types.
I am assuming that you are getting this error because you are trying to reference inputText
outside of the event listener, am I correct? Assuming that you are, the problem has to do with the fact that let
and const
are block-level variables.
This means that they are only defined within the block of code they are created in. A block can be anything between: ()
or {}
. Because you define your let inputText = some value here
within the event listener, that is the only place you can reference the variable do to it's block level scope.
However, if you create the variable in global scope (outside all of the functions) then you can reference it, change it, etc. from wherever you want in your code. That is why it works when you have it outside of the event listener and then reference the variable anywhere, and also why it doesn't work if you create it inside the event listener and try to reference it anywhere outside of it.
Let me know if you need a better explanation.
Rosario Dawson
400 PointsDane Parchment , I do understand what you are talking about (global and local scoping), but the thing that I don't get is how can a variable that I've created in the eventListener like so:
formField.addEventListener("submit", (e) => {
e.preventDefault();
let inputText = inputField.value;
});
... cause an error:
Uncaught ReferenceError: inputText is not defined
I don't get this. The way I see it - I'm only accessing the variable inputText inside the scope of the function and nowhere else, so it should work given the logic you've explained earlier, right?
Dane Parchment
Treehouse Moderator 11,077 PointsWell I just tested it, and it does work. The only way you could possibly be getting an undefined error is you are trying to reference inputText outside of the event listener.
Rosario Dawson
400 PointsI have no idea why, but this keeps happening to me. I've tried on workspaces (google chrome) and locally, using sublime text and firing up firefox browser.