Локальная и глобальная переменная Javascript
Я новичок в JavaScript, и я делал некоторые практики в области локальных и глобальных переменных, следующий мой код (fiddle):
var myname = "initial"
function c(){
alert(myname);
var myname = "changed";
alert(myname);
}
c();
когда вызывается первое предупреждение, оно показывает myname
как undefined. поэтому я запутался в том, что я не могу получить доступ к глобальному экземпляру myname
, и если я не определяю myname
внутри функции, тогда он будет работать нормально.
Ответы
Ответ 1
В Javascript объявления переменных автоматически перемещаются в начало функции. Таким образом, интерпретатор сделал бы это более похожим:
var myname = "initial"
function c(){
var myname;
// alerts undefined
alert(myname);
myname = "changed";
// alerts changed
alert(myname);
}
c();
Это называется "подъем".
Из-за подъема и того факта, что область для любой переменной - это функция, которую она объявила, стандартная практика перечисляет все переменные в верхней части функции, чтобы избежать этой путаницы.
Ответ 2
Он не заменяет глобальную переменную. То, что происходит, называется "переменным подъемом". То есть myname var myname; вставляется в верхнюю часть функции. Всегда инициализируйте свои переменные перед их использованием.
Попробуйте это
var myname = "initial"
function c(){
alert(myname);
myname = "changed";
alert(myname);
}
c();
Fiddle -
http://jsfiddle.net/xjmBf/2/