Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
131
rated 0 times [  136] [ 5]  / answers: 1 / hits: 22026  / 11 Years ago, fri, november 1, 2013, 12:00:00

I am new to JavaScript and I was doing some practices on local and global variable scopes. Following is my code(fiddle):




var myname = initial
function c(){
alert(myname);
var myname = changed;
alert(myname);
}
c();




When the first alert is called, it is showing myname as undefined. So my confusion is why I am not able to access a global instance of myname and if I don't define myname within the function then it will work fine.


More From » javascript

 Answers
20

In JavaScript, the variable declarations are automatically moved to the top of the function. So, the interpreter would make it look more like this:




var myname = initial
function c(){
var myname;
// Alerts undefined
alert(myname);
myname = changed;
// Alerts changed
alert(myname);
}
c();




This is called hoisting.


Due to hoisting and the fact that the scope for any variable is the function it's declared in, it's standard practice to list all variables at the top of a function to avoid this confusion.


[#74568] Thursday, October 31, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
clifford

Total Points: 86
Total Questions: 114
Total Answers: 111

Location: Wales
Member since Mon, May 17, 2021
3 Years ago
;