Pregunta ¿Cómo lidiar limpiamente con variables globales?


Tengo varias páginas aspx (más de 50). Necesito declarar un número (5-7) de variables globales en cada una de estas páginas. Las variables en una página son independientes de las otras, aunque algunas pueden ser iguales.

Actualmente estoy declarando en la parte superior de la página y fuera de cualquier función.

¿Debo abordar esto de manera diferente y hay algún efecto secundario de este enfoque?

Si es un duplicado exacto, házmelo saber. Gracias


32
2018-02-21 08:47


origen


Respuestas:


Es una buena práctica no saturar el alcance global. Especialmente dado que otros frameworks o scripts drop-in pueden contaminar o sobrescribir sus vars.

Crea un espacio de nombres para ti

http://www.javascripttoolbox.com/bestpractices/#namespace

Más aquí: https://stackoverflow.com/search?q=namespace+javascript+global

Algunos ejemplos que utilizan diferentes métodos de configuración de los vars

ProjapatiNS = {}
ProjapatiNS.counter = 0;
ProjapatiNS["page1"] = { "specificForPage1":"This is page 1"}
ProjapatiNS.page2 = { "specificForPage2":"This is page 2", "pagenumber":2}
ProjapatiNS.whatPageAmIOn = function { return location.href.substring(location.href.lastIndexOf('page')+4)}

32
2018-02-21 09:28



Como dice @mplungjan, la mejor práctica es evitar las variables globales tanto como sea posible.

Como window es global, puede declarar un espacio de nombre en cualquier momento y dentro de cualquier función usando window.NAMESPACE = {};

Luego puede acceder a NAMESPACE globalmente y establecer sus valores en él como propiedades, desde dentro de la misma u otra función:

NAMESPACE = { var1:"value", var2:"value" /* etc */ };

Si puede hacer todo esto dentro de los archivos de script en lugar de hacerlo directamente en su página, tanto mejor, sin embargo, supongo que es posible que no tenga los valores disponibles en un script estático.


3
2018-02-21 09:48



Un enfoque sería declarar la variable en el nivel "raíz", es decir, fuera de cualquier bloque de código antes de que cualquier otro código JS intente acceder a él.

Puede establecer variables globales usando window.variablename = value; para mantenerlo limpio por lo menos superficialmente.


1
2018-02-21 08:59