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.

Author: OscarRyz, 2011-03-23

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
 76
Author: Bodman,
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'
 13
Author: Sam Dufel,
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

 3
Author: It Grunt,
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ą.

 1
Author: Agonych,
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