The FOR loop dilemma in JS

When I first started with Javascript, there was a lot of friction. I'd make syntactical mistakes that would result in hours of debugging. One of the reason I like languages that compile first. Today, I'll take you through a dumb syntactical error that had my head spinning.

The for loop

function workThatForLoop() {
  const data = [1, 1, 2, 3, 5, 8, 13];
  for (let start in data) {
    console.log(start);
  }
}

workThatForLoop();
Output:
"0"
"1"
"2"
"3"
"4"
"5"
"6"

Now, one would think for loop with 'in' keyword will loop through the values inside the array but noooooope.

And it outputs a string not an int.

Let's move to the next for loop syntax

function workThatForLoop() {
  const data = [1, 1, 2, 3, 5, 8, 13];
  for (let start of data) {
    console.log(start);
  }
}

workThatForLoop();
Output:
1
1
2
3
5
8
13

The above for loop loops through the values inside the array and prints them as they are, meaning if they are string then it will output the string.

I was a little taken back with the syntax, after working with JS for some time, I still make the above mistake. :'((

I am just saying that the syntax could be more developer friendly.

Anyway, you understood the difference, right? So be mindful. Learn from my mistake.

Cheers!