Je lis actuellement un livre sur JavaScript par Pragmatic, et je suis confus à propos d'une chose. Ils ont une section sur la façon de faire des variables globales, locales ou privées. P>
Quelle est la différence entre les variables locales et privées? Y a-t-il un? P> li>
Comment fait une variable globale ou locale, ils ont dit quelque chose à propos de mettre "var =" avant cela, mais c'était très vague. p> li> ol>
6 Réponses :
Dans le contexte du navigateur, le mot-clé var traite la variable à celle de la fonction actuelle.
(function() { var x = 10; })(); console.log(x); #undefined
Votre définition du privé est médiocre. Les variables ne sont jamais privées.
@Raynos Ce n'est pas en fait une variable privée dans le sens commun du terme, c'est simplement une variable locale. Code>
... Ou évitez le cafetière. :-)
aucun, les gens utilisent "privé" parce qu'ils sont erronés et sont censés dire "local" p> li>
Les variables locales sont définies comme p> li>
Les variables globales sont une propriété de l'objet de portée globale (qui est code >window.foo = "global"; code> p> Le fait que vous pouvez faire donne Notez que vous pouvez faire des variables globales en les déclarant dans la plupart des étendues de la portée p> Ça devrait être a noté que vous ne devriez pas avoir de code dans la plupart des étendues, jamais. Vous devriez envelopper toutes vos périmètres dans des fonctions anonymes afin que vous obteniez «la portée du niveau de module». Cela signifie que vous avez une portée supérieure au niveau par fichier. Cela fait partie du module module. P> ol> var foo = "local"; code> p>
fenêtre code> dans le navigateur) < /p >p>
foo = "global"; code> sans première variable déclarante FOO avec
var foo code> est un "bogue". Ceci est fixé en mode Strict ES5. P>
(fonction () {"Utiliser strict"; foo = 42;}) () code> p>
RéférenceError: FOO n'est pas défini CODE> P>
Quelle est la différence entre les variables locales et privées? Y a-t-il un? p>
dépend dans quel contexte ils sont utilisés. Généralement, ils signifient la même chose. Du point de vue de l'OOP, une variables locales est généralement appelée privée. P>
Comment fait une variable globale ou locale, ils ont dit quelque chose à propos de mettre "var =" avant cela, mais c'était très vague. P> blockQuote>
Lorsque vous mettez
var code> avant la variable, il devient des variables locales, en l'absence, elle devient une variable globale. Par exemple: p>
xxx pré> Exemple plus pratique: strong> p>
xxx pré> blockQuote>
JavaScript a une portée de la fonction, toute variable définie dans une fonction avec un mot-clé var code> est locale à la fonction et n'est pas visible à l'extérieur. Les variables définies dans la fonction sans mot-clé Var sont des globaux et sont visibles partout.
function test(){
var local = 'local'; // this is local
global = 'global'; // this is global
}
test(); // call a function
alert(local) // undefined
alert(global) // global
alerte (local); code> jette une référenceError
Variables privées n'a de sens que lorsque vous construisez des objets. Le modèle de prototype typique Vous ajoutez que les variables et l'assistant nécessaires sont des fonctions nécessaires comme propriétés de l'instance de l'objet et / ou de son prototype, mais cela présente l'inconvénient de les rendre visibles à toute personne ayant accès à l'objet. Pour éviter cela, il y a un motif alternatif dans lequel les variables sont des variables locales du constructeur et toutes les méthodes sont déclarées dans la portée du constructeur et que seuls les propriétés publiques sont attribuées en tant que propriétés réelles de l'objet. P>
Je trouve toutes vos réponses très étrange car je pensais que c'était comme suit:
Vous voudrez peut-être jeter un coup d'œil sur Stackoverflow.com/questions/500431/javascript-vaitables -Scope