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 trial

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); } }

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

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

2 Answers

28,558 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) {

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 :)