Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

JavaScript JavaScript Loops, Arrays and Objects Simplify Repetitive Tasks with Loops Refactor Using a Loop

It logs undefined after the number 24!!

I 'm at the "Refactor Using a Loop" and I can't understand why after it logs the number 24 it also logs undefined.Here is my code:

for(var i = 0;i < 25;i++) { if(i % 2 === 0 && !i === 0) { console.log(i); } }

script.js
for(var i = 0;i < 25;i++) {
  if(i % 2 === 0 && !i === 0) {
   console.log(i) 
  }

};
index.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JavaScript Loops</title>
</head>
<body>
<script src="script.js"></script>
</body>
</html>

2 Answers

andren
andren
28,526 Points

With this code: !i === 0 you are telling JavaScript to reverse i and compare it to 0, rather than reverse the result of that comparison. To do what you intended you need to wrap the comparison in a parenthesis like this: !(i === 0) or use the not equal comparison instead of using the NOT operator like this: i !== 0.

Doing that will make your code work, but it's worth nothing that your code is overly complicated. Instead of looping 24 times and only printing if the number is even and not 0, you could just start i at 2 and increase it by 2 each loop. Like this:

for(var i = 2;i < 25; i+= 2) {
   console.log(i) 
};

That will result in the same sequence of numbers being printed and is not only simpler code wise, but more efficient as well, since the loop has to run less times.

Ok , thanks a lot! That solve my problem :)