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