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.
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
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'
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
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.