2014-09-12 5 views
-4

Désolé si je ne suis pas assez clair que je suis nouveau à javascript. Laissez-moi vous expliquer avec un exemple.javascript variables globales/locales et retour variable au HTML

par exemple, si j'ai

*

(function() 
var foo; 
windows.foo = foo = (function()){ 
function foo (a,b){ 
this.colour = a.colour 
this.shape = b.shape 
} 
return foo; 
})(); 
}).call(this);* 

Maintenant, mes questions était

  1. quant à la portée, lorsque le "foo" est globale et locale.

2.Comment afficher la valeur de foo dans le code HTML. Je ne peux pas utiliser document.getElementbyid(); Y at-il d'autres fonctions que je peux utiliser?

+0

Cela devrait être 'getElementById', pas' getelementbyid'. – Afsa

+0

'ici, le second asdf est une classe et le premier asdf est une variable globale. 'Faux, sur les deux points. '// Pourquoi Parenthesis"() ";' recherche IIFE. «// qu'est-ce que cela signifie et sa signification?» dépend de ce que «ceci» est et de ce qu'il exécute (vous l'avez laissé de côté). La deuxième question n'a tout simplement aucun sens. –

+0

lire http://stackoverflow.com/questions/16937022/iife-invocation-in-javascript. Notez que l'IIFE interne est totalement inutile. – Bergi

Répondre

0

Par

var asdf; 

vous déclarez une variable dans le périmètre actuel.

window.asdf = ... 

définit la valeur de la propriété "asdf" de l'objet nommé "window".

Le

return asdf; 

retourne la fonction "asdf" vient de déclarer; ceci est assigné à votre variable (locale) "asdf" ainsi qu'à window.asdf. Les parenthèses appellent la fonction définie localement (aboutissant au retour mentionné précédemment).

.call(obj); 

appelle la fonction et définit le pointeur this à l'intérieur de la fonction sur "obj".