В последнее время я изучаю некоторые основы JavaScript и потратил довольно много времени на разбор некоторых выражений функций, чтобы лучше их понять. Я все еще немного не уверен, что на самом деле происходит в нескольких примерах, и хотел бы получить какое-то объяснение по этому поводу, если я ошибаюсь или, по крайней мере, подтверждаю, правилен ли мой подход.Область переменных в выражениях функций
Есть три фрагменты кода, с небольшими различиями в них:
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);
Что мне интересно, что именно происходит, чтобы заставить их работать так, как они.
Первый случай кажется относительно прямо вперед - my_number
начинается, как глобальные, number
является локальным по отношению к функции и my_number
изменяется внутри функции, так что это в глобальной системе координат 10.
Второй случай также представляется очевидным, - это похоже на первый, только есть новая локальная переменная my_number
внутри функции, которая назначена 10, и вне функции my_number
еще 7.
Что я неуверенность в том, что это третья часть. Я полагаю, что, поскольку все упоминания о number
теперь my_number
, функция создает новую переменную my_number
в следующей строке:
var timesTwo = function(my_number)
даже если нет в теле функции нет var my_number
?
Это верно, и этот вопрос может быть в основном не задан. =) Все аргументы функции являются переменными с функциональной областью –