javascript - Variable scope in function expressions -
i've been learning basics of javascript lately , have spent quite time disassembling function expressions better understand them. i'm still bit unsure happens in few examples , explanation on if i'm wrong, or @ least confirmation whether train of thought correct.
there 3 snippets of code slight differences in them:
var my_number = 7; var timestwo = function(number) { my_number = number * 2; console.log("inside " + my_number); }; timestwo(5); console.log("outside " + my_number); .
var my_number = 7; var timestwo = function(number) { var my_number = number * 2; console.log("inside " + my_number); }; timestwo(5); console.log("outside " + my_number); .
var my_number = 7; var timestwo = function(my_number) { my_number = my_number * 2; console.log("inside " + my_number); }; timestwo(5); console.log("outside " + my_number); what i'm curious happens make them work do.
the first case seems relatively straight forward - my_number starts global, number local function , my_number changed inside function it's 10 in global frame.
the second case seems clear - it's similar first one, there new local variable my_number inside function assigned 10, , outside function my_number still 7.
what unsure third piece. assume since mentions of number my_number, function creates new my_number variable in following line:
var timestwo = function(my_number) even though there no var my_number in function body?
var my_number = 7; var timestwo = function(number) { my_number = number * 2; console.log("inside " + my_number); }; timestwo(5); console.log("outside " + my_number); this first example declares my_number in global scope , sets value 7. timestwo function accepts argument in parameter, referenced number within function. when function called, setting my_number variable defined in global scope equal passed in argument multiplied two. logging same result both "inside" , "outside" calls.
var my_number = 7; var timestwo = function(number) { var my_number = number * 2; console.log("inside " + my_number); }; timestwo(5); console.log("outside " + my_number); in second example, declaring locally scoped my_number within timestwo function. because of this, logging different my_number variables in "inside" , "outside" calls.
var my_number = 7; var timestwo = function(my_number) { my_number = my_number * 2; console.log("inside " + my_number); }; timestwo(5); console.log("outside " + my_number); in third example, timestwo accepts parameter , using variable my_number keep track of it.
Comments
Post a Comment