user11822694
user11822694

Reputation:

Javascript prints value in loop though the print is outside the loop

This question was asked before: Trouble understanding what happens during javascript for loop but the asker didn't get the right answer and so did I. I learn C++ and Python earlier so I get familiar with loop but when I practing this code:

let text = "";
let i;
for(i=0; i<5; i++)
{text += "The number is " + i + " ";}
document.write(text);

the output is totally different to what I expected. I visited W3schools but I can't find the answer https://www.w3schools.com/js/js_loop_for.asp

https://www.w3schools.com/js/tryit.asp?filename=tryjs_loop_for_om3

I expected the output is "" because text can't be changed but the code prints out: "The number is 0 The number is 1 The number is 2 The number is 3 The number is 4". My question is why the print executes in the loop though the print is outside the loop? Thank you very much!

Upvotes: 0

Views: 494

Answers (2)

Ilham Naufal
Ilham Naufal

Reputation: 61

why the output not empty string because the text variable not empty anymore after for loop. you have assign string when loop so the text variable not empty anymore

Upvotes: 0

fravolt
fravolt

Reputation: 3001

The print executes as you expect: Only once at the end. In the loop, each time an extra part is appended to text. That is:

[iteration 0] ""
[iteration 1] "The number is 0 "
[iteration 2] "The number is 0 The number is 1"
[iteration 3] "The number is 0 The number is 1 The number is 2"
etc.

Then in the end, you print the final String which is the concatenation of all the partial Strings you 'glued' together.

Saying x += y is the same as saying x = x + y. Standard variables (var and let) are still mutable, so if you initialize it as an empty String, you can still append/replace it later.

Try making text a const instead, and there should be a runtime TypeError because you try to reassign a constant.

Upvotes: 3

Related Questions