Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8577861
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 11, 20262026-06-11T20:15:18+00:00 2026-06-11T20:15:18+00:00

I remember variables are function scoped in Javascript. But, how is the behavior if

  • 0

I remember variables are function scoped in Javascript. But, how is the behavior if I redefine the local variable in a loop. One common use case is nested loops.
In the below code, if I change j to i, the outer for loop terminates after one iteration as the value of i in outer scope is same as inner for loop. Since I use var, I was expecting (similar to other language) it is redefined inside inner fo loop. Does this mean in JS, there is no way to redeclare and use local variable within function scope.

for (var i = 0, len = x.length; i < len; i++) {
            ...
            for (var j = 0, len = y.length; j < len; j++) {
                ...
            }
        }
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-11T20:15:19+00:00Added an answer on June 11, 2026 at 8:15 pm

    As you said, JavaScript only has function scope. Variable declarations are hoisted to the top of the scope in which they are declared. Your example is interpreted like this:

    var i, j, len; //Declarations are hoisted...
    for (i = 0, len = x.length; i < len; i++) { //Assignments happen in place
        for (j = 0, len = y.length; j < len; j++) {
    
        }
    }
    

    As for this part:

    if I change j to i, the outer for loop terminates after one iteration

    If you replace j with i, then after the first iteration of the inner loop, i will be y.length - 1, and the outer loop will either continue or stop, depending on the difference between x.length and y.length.

    If you’re interested in the real explanation of the internal workings, the ECMAScript spec (Declaration Binding Instantiation) covers it in detail. To summarise, every time control enters a new execution context, the following happens (a lot more than this happens, but this is part of it):

    For each VariableDeclaration and VariableDeclarationNoIn d in code, in
    source text order do

    • Let dn be the Identifier in d.
    • Let varAlreadyDeclared be the result of calling env’s HasBinding concrete
      method passing dn as the argument.
    • If varAlreadyDeclared is false, then
      • Call env’s CreateMutableBinding concrete method passing dn and
        configurableBindings as the arguments.
      • Call env’s SetMutableBinding
        concrete method passing dn, undefined, and strict as the arguments.

    This means that if you declare a variable more than once per execution context, it will effectively be ignored.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm trying to keep a hash local to one function that remembers its state
I remember reading somewhere that function arguments get turned into private variables within the
I remember reading that static variables declared inside methods is not thread-safe. (See What
I remember Google says we should always use the latest API and set the
I remember a few months ago finding a very short (three methods, IIRC) but
I remember reading something about it a few years back but I don't remember
I remember reading something once, but could not find it now while searching, if
For a variable used in a function that is called very often and for
or, Declaring multiple variables in a for loop ist verboten ?! My original code
I have a function which is passed a list of ints, until one value

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.