Comme mentionné ci-dessus, il y a des problèmes avec l'utilisation de la plus haute portée dans votre fichier de script. C'est un autre problème: Le fichier de script peut être exécuté à partir d'un contexte qui n'est pas le contexte global dans certains environnement d'exécution.
Il a été proposé d'attribuer le mondial de window
directement. Mais c'est aussi le moment de l'exécution dépendant et ne fonctionne pas dans le Nœud etc. Il va montrer que portable variable globale des besoins de gestion d'une période de réflexion et un effort supplémentaire. Peut-être qu'ils vont le corriger à l'avenir ECM versions!
Pour l'instant, je vous recommande de quelque chose comme cela pour soutenir la bonne gestion globale pour tous les environnements d'exécution:
/**
* Exports the given object into the global context.
*/
var exportGlobal = function(name, object) {
if (typeof(GLOBAL) !== "undefined") {
// Node.js
GLOBAL[name] = object;
}
else if (typeof(window) !== "undefined") {
// JS with GUI (usually browser)
window[name] = object;
}
else {
throw new Error("Unkown run-time environment. Currently only browsers and Node.js are supported.");
}
};
// export exportGlobal itself
exportGlobal("exportGlobal", exportGlobal);
// create a new global namespace
exportGlobal("someothernamespace", {});
C'est un peu plus saisissant, mais il rend votre variable globale de la gestion de l'avenir.
Avertissement: une Partie de cette idée m'est venue en regardant stacktrace.js.