J'ai une variable de table locale dans la fonction, et une fonction enfant supposée avoir une variable avec le même nom, tout en étant capable d'accéder à la variable du parent. Cela devrait être évident et simple, mais, malheureusement, JavaScript ne me laisse pas la variable d'accès parent si je définir une variable locale avec le même nom partout:Comment conserver la valeur de variable de la fonction parent avant de créer une variable locale avec le même nom?
var p = {alpha : 'beta'};
console.debug (p);
// [08:16:21.896] ({alpha:"beta"})
// Okay.
(function() {
console.debug (p);
// [08:16:21.896] ({alpha:"beta"})
// Right! JavaScript, you're so awesome!
})();
// One moment though, I think I still need the parent's table...
(function() {
var p = { 'p': p };
console.debug (p);
// [08:16:21.896] ({p:(void 0)})
// Wait, what?
})();
// Okay, maybe giving it the same name in the same statement confuses you?
(function() {
var parent_p = p;
var p = {};
console.debug (parent_p);
// [08:16:21.897] undefined
})();
// Give me back my variable! http://v.gd/jsWhyDoYouDoThis
Qu'est-ce qui se passe là-bas? Y a-t-il un moyen de contourner cela?
Pourquoi doit-il avoir le même nom? Pouvez-vous accéder à window.p ou quel que soit l'équivalent de nœud si vous exécutez un nœud? Quoi qu'il en soit, le levage variable. –