7
votes

Fonctions globales et locales et privées (JavaScript)

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.

  1. Quelle est la différence entre les variables locales et privées? Y a-t-il un?

  2. Comment fait une variable globale ou locale, ils ont dit quelque chose à propos de mettre "var =" avant cela, mais c'était très vague.


1 commentaires

Vous voudrez peut-être jeter un coup d'œil sur Stackoverflow.com/questions/500431/javascript-vaitables -Scope


6 Réponses :


4
votes

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


3 commentaires

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.


... Ou évitez le cafetière. :-)



8
votes
  1. aucun, les gens utilisent "privé" parce qu'ils sont erronés et sont censés dire "local"

  2. Les variables locales sont définies comme

    var foo = "local";

    Les variables globales sont une propriété de l'objet de portée globale (qui est fenêtre dans le navigateur) < /p >p>

    code >window.foo = "global";

    Le fait que vous pouvez faire foo = "global"; sans première variable déclarante FOO avec var foo est un "bogue". Ceci est fixé en mode Strict ES5.

    (fonction () {"Utiliser strict"; foo = 42;}) ()

    donne RéférenceError: FOO n'est pas défini

    Notez que vous pouvez faire des variables globales en les déclarant dans la plupart des étendues de la portée xxx Ç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.


0 commentaires

0
votes

Quelle est la différence entre les variables locales et privées? Y a-t-il un?

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.

Comment fait une variable globale ou locale, ils ont dit quelque chose à propos de mettre "var =" avant cela, mais c'était très vague.

Lorsque vous mettez var avant la variable, il devient des variables locales, en l'absence, elle devient une variable globale. Par exemple: xxx

Exemple plus pratique: xxx


0 commentaires

0
votes

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


1 commentaires

alerte (local); jette une référenceError



0
votes

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.


0 commentaires

0
votes

Je trouve toutes vos réponses très étrange car je pensais que c'était comme suit: xxx


0 commentaires