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 trialPhilip Kroupoderov
Front End Web Development Techdegree Graduate 21,641 Pointsnull in if statement does not work
For the student record challenge at the very end of the JS loops, arrays and objects course only the null in my if statement is not working. Here's a link to my work:
The problem is when I type a student that exists and then type 'quit', that student's record is written to the page. When I do the same thing but instead of typing 'quit' I click the cancel button, that student's record does not get written to the page. Can someone please explain me why, and how to make it work?
Philip Kroupoderov
Front End Web Development Techdegree Graduate 21,641 PointsSteven my apologies I've updated the question with a link to the snapshot
1 Answer
Steven Parker
231,269 PointsA null
has no "toLowerCase" method, so when "search" is null, applying that method causes an error and the program ends before reaching the "print" statement.
You can fix this by restructuring the code so the method is only applied after the variable is determined to not contain null
:
search = prompt("Type a name");
if (search === null || search.toLowerCase() === "quit") {
Philip Kroupoderov
Front End Web Development Techdegree Graduate 21,641 PointsSteven thank you, it does work. I have tried the exact same thing but the search.toLowerCase() === quit condition came before the || operator. When that was the case it did not work. Could you also explain why? Does it really matter what comes first in an if statement when a logical operator is involved ??
Steven Parker
231,269 PointsThe OR operator (||) has what is called "left-to-right associativity". That means the expression on the left will be evaluated first. It also has what is called "short-circuit evaluation" which means that if the expression on the left evaluates as "truthy" then the expression on the right is ignored.
So if you test for null first, then when the value is null the "toLowerCase" method is never used. But when the tests are reversed, the method is applied to the null which causes an error and ends the program.
Happy coding!
Steven Parker
231,269 PointsSteven Parker
231,269 PointsYou can't share a direct URL to your workspace, it's temporary and only exists while you are using it. But you can use the snapshot function in the workspace and provide the link to that.