Scope of variables in a for loop in JS [duplicate] - javascript

This question already has answers here:
What is the scope of variables in JavaScript?
(27 answers)
Closed 7 years ago.
Consider the following for loop in Javascript.
for( var i=0;i<10;i++){ }
console.log(i);
If i run the code, I will get 10 in the console. Why is this? How is the scope of variable 'i' available outside for loop ?

In javascript, there is no block level scope prior to ES6 (with let), so any variable you declare will have a function level scope (if the declaration is inside a function) or global scope.
JavaScript before ECMAScript 6 does not have block statement scope;
rather, a variable declared within a block is local to the function
(or global scope) that the block resides within. For example the
following code will log 5, because the scope of x is the function (or
global context) within which x is declared, not the block, which in
this case is an if statement.
Variable scope

Related

In JavaScript; does a let variable declared outside of a block get a global scope? [duplicate]

This question already has answers here:
Do let statements create properties on the global object?
(5 answers)
A javascript 'let' global variable is not a property of 'window' unlike a global 'var' [duplicate]
(1 answer)
Closed 2 years ago.
In JavaScript; does a let variable declared outside of a block become a global scope?
let letVariable = 2;
console.log(letVariable);
I don't know if I understand you correctly.
There is no "outside of a block", because even if you use it on the blank page, it is in the "main/global block" but only in the same script. its not available from other scripts.

What is the scope of my variable when I use let? [duplicate]

This question already has answers here:
Do let statements create properties on the global object?
(5 answers)
A javascript 'let' global variable is not a property of 'window' unlike a global 'var' [duplicate]
(1 answer)
What is the difference between "let" and "var"?
(39 answers)
Closed 2 years ago.
Im new in javascript and in programming.
If I declare a variable with var I see that my variable is declared globally and my variable is inside the window object.
Example:
var element1 = 1;
window.element1; //This returns 1
But when I use let I can't access my variable using the window object.
Example:
let element2 = 1;
window.element2; //This returns undefined
So, where has been my variable element2 been declared?
What is the scope of element2 ?
You are confusing scope and automatic attachment to the default object.
If you use let or var outside of any block, function, or module then the scope will be global.
var will also attach a property of the same name to the default object (which is window in the case of JS running in a browser).

If statement vs function blocks for var keywords [duplicate]

This question already has answers here:
What is the scope of variables in JavaScript?
(27 answers)
Closed 3 years ago.
My question is why is a variable (when using var keyword) accessible outside the if statement block, but not outside the function block? Consider this code:
let age = 30;
if (true){
let age = 40
console.log('inside', age) //logs inside, 40//
var name = 'shaun'
}
console.log('outside if loop', age, name) //logs outside if loop, 30, shaun //
function test (){
var xyz = 'ashley';
console.log(xyz)
}
test ()
console.log('outside function', xyz) //throws an error//
Thank you for your time. Any insights would be appreciated!
Because of the current context of execution. The context in which values and expressions are "visible" or can be referenced. If a variable or other expression is not "in the current scope," then it is unavailable for use. Scopes can also be layered in a hierarchy, so that child scopes have access to parent scopes, but not vice versa.
A function serves as a closure in JavaScript, and thus creates a scope, so that (for example) a variable defined exclusively within the function cannot be accessed from outside the function or within other functions.
Also ES6 does have block scope for variable definitions with the let and const keywords but not with var.
Here is an article on Wikipedia about Scope.

Javascript ES6+, using bracket notation to access module global variables [duplicate]

This question already has answers here:
In what scope are module variables stored in node.js?
(4 answers)
Closed 4 years ago.
Is it possible to access a global variable inside an es6 module using the bracket notation, basically doing something like this:
const GLOBAL = 'something'
console.log(this['GLOBAL']) // evaluates to undefined, of course
Doesn't seem to be working
Global constants do not become part of the widnow object, unlike var.
This declaration creates a constant whose scope can be either global or local to the block in which it is declared, but if left alone in the global, they do not become property of the window object.

Logging Global variable inside the function Block immediately before redeclaration going undefined: Should not it take the Global Variable Value? [duplicate]

This question already has answers here:
Are variables declared with let or const hoisted?
(7 answers)
Closed 5 years ago.
let pages =100;
let pageFunction=()=>{
console.log(pages);
const pages = "20";
//console.log(pages);
}
pageFunction();
Output:
Uncaught ReferenceError: pages is not defined
at pageF (:3:13)
at :1:1
According to Mozilla "The let statement declares a block scope local variable, optionally initializing it to a value." Also "At the top level of programs and functions, let, unlike var, does not create a property on the global object."
See
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/let for more information.
This means that in the code you gave you effectively create an implicit global variable pages, as let pages is not really global, but restricted to the scope it is in.

Categories

Resources