Javascript Loops & ClosuresAsync, callbacks, and closuresOverusing JavaScript closures?Using Javascript FileWriter with minimal use of closuresCorrectly dealing with closures and modularity in JavascriptCleaning if / else mess in Node.js poker gameLimiting function invocations using closuresOptimize Javascript function with many (maybe?) loops insideInteractive small townSimple JavaScript front-end framework for building web componentsShuffling an array keeping some elements fixed
A Journey Through Space and Time
Why don't electron-positron collisions release infinite energy?
What typically incentivizes a professor to change jobs to a lower ranking university?
How is the claim "I am in New York only if I am in America" the same as "If I am in New York, then I am in America?
A function which translates a sentence to title-case
Why CLRS example on residual networks does not follows its formula?
How to get the available space of $HOME as a variable in shell scripting?
What defenses are there against being summoned by the Gate spell?
Is there a familial term for apples and pears?
What is the command to reset a PC without deleting any files
Symplectic equivalent of commuting matrices
Why are only specific transaction types accepted into the mempool?
How is it possible for user to changed after storage was encrypted? (on OS X, Android)
How do I create uniquely male characters?
Prevent a directory in /tmp from being deleted
Banach space and Hilbert space topology
If Manufacturer spice model and Datasheet give different values which should I use?
How old can references or sources in a thesis be?
I probably found a bug with the sudo apt install function
Is it tax fraud for an individual to declare non-taxable revenue as taxable income? (US tax laws)
XeLaTeX and pdfLaTeX ignore hyphenation
"You are your self first supporter", a more proper way to say it
Continuity at a point in terms of closure
Pronouncing Dictionary.com's W.O.D "vade mecum" in English
Javascript Loops & Closures
Async, callbacks, and closuresOverusing JavaScript closures?Using Javascript FileWriter with minimal use of closuresCorrectly dealing with closures and modularity in JavascriptCleaning if / else mess in Node.js poker gameLimiting function invocations using closuresOptimize Javascript function with many (maybe?) loops insideInteractive small townSimple JavaScript front-end framework for building web componentsShuffling an array keeping some elements fixed
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
$begingroup$
I am reading the "You Don't Know JavaScript" series of books by Kyle Simpson and I am really enjoying it so far, it is so deep and full of JavaScript tips and tricks. I stumbled upon a closure section and I am unable to understand this code properly:
for (var i=1; i<=5; i++)
setTimeout( function timer()
console.log( i );
, i*1000 );
As the author says most developers would assume that the numbers from 1 to 5 are printed but what happens is that 6 is printed 5 times in the console.
What I am struggling to understand is why the function that includes the timeout/timer is only executed after the loop is finished and not executed during the iteration of the i variable?
The setTimeout function is nested inside the for loop, but it's only executed after the for loop is finished 5 times! The author also mentions that even if the timeout was 0, the behavior would be the same. I hope someone can explain, as I am all new to this.
javascript
New contributor
$endgroup$
add a comment |
$begingroup$
I am reading the "You Don't Know JavaScript" series of books by Kyle Simpson and I am really enjoying it so far, it is so deep and full of JavaScript tips and tricks. I stumbled upon a closure section and I am unable to understand this code properly:
for (var i=1; i<=5; i++)
setTimeout( function timer()
console.log( i );
, i*1000 );
As the author says most developers would assume that the numbers from 1 to 5 are printed but what happens is that 6 is printed 5 times in the console.
What I am struggling to understand is why the function that includes the timeout/timer is only executed after the loop is finished and not executed during the iteration of the i variable?
The setTimeout function is nested inside the for loop, but it's only executed after the for loop is finished 5 times! The author also mentions that even if the timeout was 0, the behavior would be the same. I hope someone can explain, as I am all new to this.
javascript
New contributor
$endgroup$
add a comment |
$begingroup$
I am reading the "You Don't Know JavaScript" series of books by Kyle Simpson and I am really enjoying it so far, it is so deep and full of JavaScript tips and tricks. I stumbled upon a closure section and I am unable to understand this code properly:
for (var i=1; i<=5; i++)
setTimeout( function timer()
console.log( i );
, i*1000 );
As the author says most developers would assume that the numbers from 1 to 5 are printed but what happens is that 6 is printed 5 times in the console.
What I am struggling to understand is why the function that includes the timeout/timer is only executed after the loop is finished and not executed during the iteration of the i variable?
The setTimeout function is nested inside the for loop, but it's only executed after the for loop is finished 5 times! The author also mentions that even if the timeout was 0, the behavior would be the same. I hope someone can explain, as I am all new to this.
javascript
New contributor
$endgroup$
I am reading the "You Don't Know JavaScript" series of books by Kyle Simpson and I am really enjoying it so far, it is so deep and full of JavaScript tips and tricks. I stumbled upon a closure section and I am unable to understand this code properly:
for (var i=1; i<=5; i++)
setTimeout( function timer()
console.log( i );
, i*1000 );
As the author says most developers would assume that the numbers from 1 to 5 are printed but what happens is that 6 is printed 5 times in the console.
What I am struggling to understand is why the function that includes the timeout/timer is only executed after the loop is finished and not executed during the iteration of the i variable?
The setTimeout function is nested inside the for loop, but it's only executed after the for loop is finished 5 times! The author also mentions that even if the timeout was 0, the behavior would be the same. I hope someone can explain, as I am all new to this.
javascript
javascript
New contributor
New contributor
New contributor
asked 4 mins ago
Arto KalishianArto Kalishian
1
1
New contributor
New contributor
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Arto Kalishian is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217039%2fjavascript-loops-closures%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Arto Kalishian is a new contributor. Be nice, and check out our Code of Conduct.
Arto Kalishian is a new contributor. Be nice, and check out our Code of Conduct.
Arto Kalishian is a new contributor. Be nice, and check out our Code of Conduct.
Arto Kalishian is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217039%2fjavascript-loops-closures%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown