Kiedy używać var w Javascript [duplikat]
To pytanie ma już odpowiedź tutaj:
Może całkiem proste pytanie.Gdzie powinienem użyć słowa kluczowego var
w JavaScript. Wydaje mi się, że używanie go lub nie ma takiego samego efektu ( ale oczywiście nadal uczę się języka )
Na przykład oba wydają mi się takie same:
(function(){
var a = "mundo"
alert("Hola, " + a )
})()
I
(function(){
a = "mundo"
alert("Hola, " + a )
})()
Ale oczywiście musi być bardziej złożony przykład, w którym pojawia się różnica.
4 answers
Kiedy używasz var
, tworzysz instancję zmiennej w bieżącym zakresie. Spowoduje to również uniemożliwienie dostępu do zmiennych o tej samej nazwie w wyższym zakresie, w ramach bieżącego zakresu.
W Twoim pierwszym przykładzie 'a' jest tworzona i ustawiana w ramach zakresu funkcji. W drugim przykładzie, 'a' jest ustawiane poza zakresem funkcji z powodu braku var
Z var
:
var a = "A"
(function(){
var a = "B"
alert(a) //B
})()
alert(a); //A
Bez var
:
var a = "A";
(function(){
a = "B"
alert(a) //B
})()
alert(a) //B
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-25 15:47:45
Using var:
var a = 'world';
myfunction = function(){
var a = "mundo"
alert("Hola, " + a )
}
myfunction(); //alerts 'hola, mundo'
alert(a); //alerts 'world';
Nie używa var:
var a = 'world';
myfunction = function(){
a = "mundo"
alert("Hola, " + a )
}
myfunction(); //alerts 'hola, mundo'
alert(a); //alerts 'mundo'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-22 22:50:08
Myślę, że musisz odświeżyć się na obiektach Javascript.
Użycie słowa kluczowego " var " spowoduje umieszczenie zmiennej w najwyższym (globalnym)zakresie. Oznacza to, że jeśli funkcja używa tej samej zmiennej, zadeklarowana zmienna " var " nadpisze zmienną (inną niż var)w funkcji... JavaScript Scopes
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-22 22:51:39
Jeśli var nie jest używany wewnątrz funkcji, JS będzie go szukał powyżej, więc jeśli używasz save vars w różnych funkcjach, mogą one być sprzeczne. Zawsze warto użyć var, jeśli definiujesz nową zmienną.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-22 22:50:08