Je suis intrigué par un comportement de node.js, qui est différent dans Google Console.Cette liaison dans node.js
est ici un simple code
var t = "GLOBAL";
var objet = {
t : "LOCAL1",
test : function() {
console.log(this.t,t);
}
};
var objet2 = {
t : "LOCAL2",
test : objet.test
};
var test = objet.test;
objet.test();
objet2.test();
test();
Ce code yiels résultat différent.
En Node.js, j'ai ces résultats:
LOCAL1 GLOBAL
LOCAL2 GLOBAL
undefined 'GLOBAL'
Dans la console chrome:
LOCAL1 GLOBAL
LOCAL2 GLOBAL
GLOBAL GLOBAL
Je pensais que d'appeler directement la fonction binded à test.t, ce serait à binded la portée globale, c'est le cas en chrome, mais noeud dans node.js.
Notez que si je supprime le var
dans la première ligne, la version node.js donne le même résultat.
Alors qu'est-ce qui se passe? Il semble qu'il y ait une portée dans node.js qui me manque? Est-ce que quelqu'un a une idée?
Ce n'est pas un problème sur la portée en javascript, vous appelez une fonction de portée globale et "T" ne se termine pas sur la portée globale. – BlaShadow