web-dev-qa-db-fra.com

Quand utiliser var en Javascript

Peut-être une question assez simple.

Où dois-je utiliser le mot clé var en JavaScript. Il me semble que je l'utilise ou pas le même effet (mais bien sûr j'apprends encore la langue)

Par exemple, ces deux me semblent les mêmes:

(function(){
  var a = "mundo"
  alert("Hola, " + a )
})()

et

(function(){
  a = "mundo"
  alert("Hola, " + a )
})()

Mais bien sûr, il doit y avoir un exemple plus complexe où la différence apparaît.

53
OscarRyz

Lorsque vous utilisez var, vous instanciez une variable dans la portée actuelle. Cela empêchera également l'accès aux variables portant le même nom dans une portée supérieure, dans la portée actuelle.

Dans votre premier exemple, "a" est instancié et défini dans l'étendue de la fonction. Dans votre deuxième exemple, "a" est défini en dehors de la portée de la fonction en raison du manque de var

Avec var:

var a = "A"
(function(){
  var a = "B"
  alert(a) //B
})()

alert(a); //A

Sans var:

var a = "A";
(function(){
  a = "B"
  alert(a) //B
})()

alert(a) //B
83
Bodman

Utilisation de var:

var a = 'world';   
myfunction = function(){
  var a = "mundo"
  alert("Hola, " + a )
}

myfunction();  //alerts 'hola, mundo'
alert(a);  //alerts 'world';

Ne pas utiliser var:

var a = 'world';   
myfunction = function(){
  a = "mundo"
  alert("Hola, " + a )
}

myfunction();  //alerts 'hola, mundo'
alert(a);  //alerts 'mundo'
15
Sam Dufel

Je pense que vous devez vous rafraîchir sur les portées d'objets Javascript.

L'utilisation du mot clé "var" placera votre variable à la portée la plus élevée (globale). Cela signifie que si une fonction utilise la même variable, la variable "var" que vous avez déclarée écrasera la variable (non var) dans votre fonction ... Scopes JavaScript

3
It Grunt

si var n'est pas utilisé à l'intérieur de la fonction, JS le recherchera ci-dessus, donc au cas où vous utiliseriez des variables de sauvegarde dans différentes fonctions, elles pourraient entrer en conflit. Il vaut toujours la peine d'utiliser une var si vous définissez une nouvelle variable.

1
Agonych