Como se mencionó anteriormente, existen problemas con el uso del alcance más alto en su archivo de script. Aquí hay otro problema: el archivo de secuencia de comandos puede ejecutarse desde un contexto que no es el contexto global en algún entorno de tiempo de ejecución.
Se ha propuesto asignar el global a window
directamente. Pero eso también depende del tiempo de ejecución y no funciona en Node, etc. Esto demuestra que la administración de variables globales portátiles necesita una consideración cuidadosa y un esfuerzo adicional. ¡Quizás lo arreglen en futuras versiones de ECMS!
Por ahora, recomendaría algo como esto para admitir una administración global adecuada para todos los entornos de tiempo de ejecución:
var exportGlobal = function(name, object) {
if (typeof(global) !== "undefined") {
global[name] = object;
}
else if (typeof(window) !== "undefined") {
window[name] = object;
}
else {
throw new Error("Unkown run-time environment. Currently only browsers and Node.js are supported.");
}
};
exportGlobal("exportGlobal", exportGlobal);
exportGlobal("someothernamespace", {});
Es un poco más mecanografiado, pero hace que su gestión de variables globales esté preparada para el futuro.
Descargo de responsabilidad: parte de esta idea se me ocurrió al mirar versiones anteriores de stacktrace.js .
Creo que también se puede usar Webpack u otras herramientas para obtener una detección más confiable y menos pirateada del entorno de tiempo de ejecución.