Learn Recursion by Building a Decimal to Binary Converter - Step 27

while (input > 0) {
    const quotient = Math.floor(input / 2);
    input = quotient ;
}

How can I use const to declare a variable that would hold a different value each time a loop is iterated? From what I understand the reason we can use const to declare a variable in a for... of loop or in the block code of a regular for loop is because the loop creates a new lexical environment/scope each time the loop iterates, but that is not the case for while loops, it works with the same scope till the condition is met, so how is this possible?
I read that it redeclares the variable each time the loop iterates and that if I compare a variable that has the same value but happened in a different iteration it won’t be the same variable, for example:

let x = [];
let i = 0;
while (i < 2) {
    const y = {};
    x.push(y);
    i++;
}
console.log(x[0] === x[1]); // returns false

meaning there are two variables with the same name in different memory spaces, how is this possible? Am I understanding correctly? I’m SO confused…

I googled it and this is what Copilot spit out:

In JavaScript, you can declare a const inside a while loop, but keep in mind that const creates a block-scoped variable. This means the variable will only exist within the block of the loop for each iteration.

Makes sense. Good question, btw.

1 Like