26 votes

Accès console aux variables Javascript locales à la fonction $(document).ready

Comment puis-je accéder à certaines variables à l'intérieur de

$(document).ready(function(){
    var foo=0;
    var bar = 3;
});

de la console Google Chrome ? Si j'essaie alert(foo), je recevrai un message disant qu'il n'est pas défini.

52voto

Florian Margaine Points 16927

Placez un point d'arrêt avec le débogueur. Vous aurez un accès complet à eux lorsque le débogueur s'arrêtera.

D'autres réponses vous disant de les mettre dans la portée globale sont mauvaises. N'utilisez pas de mauvaises pratiques juste parce que vous ne savez pas comment utiliser les bons outils.

19voto

Xophmeister Points 4281

Vous ne pouvez pas accéder à ces variables car elles sont définies dans une fermeture fonctionnelle. La seule façon de le faire serait de créer une référence globale à l'extérieur de la portée de votre fonction.

var foo, bar;

$(document).ready(function(){
    foo = 0;
    bar = 3;
});

17voto

Eric Herlitz Points 6313

Pourquoi ne pas faire une variable exposée correctement ?

$(document).ready(function(){
    var foo=0;
    var bar = 3;

    $.exposed = {
        foo: foo,
        bar: bar
    }
});

Vérifiez vos variables en faisant

console.log($.exposed.bar)

5voto

Stefan Points 5563

Vous ne pouvez pas car ils se trouvent dans un espace de fermeture. Ici il explique comment fonctionne la fermeture (Comment fonctionnent les fermetures JavaScript ?). Pour accéder à la variable, il suffit de mettre un point d'arrêt à l'intérieur de la fonction $(document).ready

4voto

Yanick Rochon Points 18537

Si vous avez vraiment besoin d'accéder à ces variables depuis différentes parties de votre code (les initialiser au chargement du document, puis y accéder ailleurs, par exemple), alors vous devez les déclarer en dehors de la fermeture de la fonction.

Si et seulement si c'est le cas, je ne suis pas partisan d'encombrer l'espace global. Je vous suggère d'utiliser un objet de base pour cela :

var myObj = {};

$(function() {
   myObj.foo = 0;
   myObj.bar = 3;
});

Notez qu'ils ne seront définis qu'une fois le document chargé! Par conséquent, alert(myObj.foo); (ou quelque chose de similaire) placé immédiatement après le bloc $(function() { ... }); renverra undefined!

Si vous avez seulement besoin d'y accéder dans ce contexte, alors ne déclarez rien en dehors de la fonction. Et essayez de déboguer votre code avec d'autres méthodes. Avec Chrome, console.log est assez utile, par exemple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X