Comment accéder à une variable globale en fonction de crochet en javascript?
Je veux utiliser la variable " x " dans le dessous de crochet de fonction.
var x = 10; //global variable
var oldA = a;
a = function a(param){
alert(x); //showing error: x is undefined
return oldA(param);
}
Comment résoudre l'erreur?
en outre, vous devriez regarder autour de délimitation de l'étendue et de Levage
la fonction attribuée à
Êtes-vous en
la fonction attribuée à
a
ne peut pas être hissé ici, car c'est une expression. La seule chose qui se hisser ici, ce sont les déclarations de variablesÊtes-vous en
node
de l'environnement? Dans ce cas, essayez de global.x = 10;
& alert(global.x)
. En fait, la pollution globale de l'objet n'est pas une bonne idée. Mais, vous pourriez vouloir essayer.OriginalL'auteur Mmh | 2013-06-28
Vous devez vous connecter pour publier un commentaire.
Votre code fonctionne très bien pour moi, mais vous pourriez vouloir résoudre
x
à la variable globale explicitement en utilisantwindow.x
.Lorsqu'il n'est pas dans un environnement de navigateur ou un environnement où l'objet global n'est pas appelé
window
, essayez:La
{x:undefined}
objet littéral est juste pour s'assurer que l'expression ne jette pas des erreurs.J'ai listé peu près tous les noms que je connais qui sont donnés à l' (à strictement parler sans nom) de l'objet global, il suffit d'utiliser ceux qui pourraient s'appliquer à votre cas.
D'autre part, si la variable globale
x
pourrait être réaffecté par le temps de la fonction (a
) est appelée, d'une fermeture serait préférable:Bien sûr, si vous êtes en mode strict, vous devez être prudent avec implicites globals, trop.
C'est tout ce que je peux penser à ce qui va mal avec votre code, un peu plus de détails pourraient nous donner une idée de ce qui se passe réellement...
thx. Et je ne dirais pas votre commentaire erreur, parce que la déclaration des variables hissé, après tout. Avec l'OP extrait de comme est,
oldA
seraundefined
, etoldA(param)
lève une erreur à l'autre. Fournir de l'OP avec un lien sur de levage est une belle contribution à l'autre.racine || fenêtre ) déclenche une erreur dans mozilla firefox console.
ReferenceError: root is not defined
si bien sûr,
root
est un alias de l'objet global en nodeJS. Dans les navigateurs, il suffit d'utiliserwindow
OriginalL'auteur Elias Van Ootegem
Pour l'accès mondial Js variable à l'intérieur de la fonction, ne pas utiliser le Var, en fonction de la portée et de la mention de la var dans la portée globale.
Par exemple.
OriginalL'auteur gnganpath