Pregunta

Escuché que no es una buena idea hacer que los elementos sean globales en JavaScript.No entiendo por qué.¿Es algo que IE no puede manejar?

Por ejemplo:

    div = getElementById('topbar');
¿Fue útil?

Solución

No creo que sea un problema de implementación, sino más bien una cuestión de buenas o malas prácticas.Por lo general, global * es una mala práctica y debe evitarse (variables globales, etc.), ya que nunca se sabe realmente cómo evolucionará el alcance del proyecto y cómo se incluirá su archivo.

No soy un gran fanático de JS, así que no podré darte detalles sobre exactamente por qué los eventos de JS son malos, pero Christian Heilmann habla aquí sobre las mejores prácticas de JS, podrías echarle un vistazo.Intente también buscar en Google "mejores prácticas de JS".

Editar:Wikipedia sobre variables globales, que también podrían aplicarse a su problema:

Las variables globales] generalmente se consideran la mala práctica precisamente debido a su no localidad:Una variable global puede modificarse potencialmente desde cualquier lugar (a menos que residan en la memoria protegida) y cualquier parte del programa puede depender de ello.Por lo tanto, una variable global tiene un potencial ilimitado para crear dependencias mutuas, y agregar dependencias mutuas aumenta la complejidad.Ver acción a distancia.Sin embargo, en algunos casos, las variables globales pueden ser adecuadas para su uso.Por ejemplo, se pueden usar para evitar tener que pasar variables frecuentes continuamente a lo largo de varias funciones.

a través de http://en.wikipedia.org/wiki/Global_variable

Otros consejos

  

¿Es algo IE no puede manejar?

No que no es una cosa IE. Nunca se puede asumir que su código será la única escritura usada en el documento. Por eso es importante que se asegure de que su código no tiene la función global o nombres de variables que otros scripts pueden anular.

Consulte juega bien con otros para ejemplos.

Asumo por "eventos" que quiere decir las de control de eventos de JavaScript (funciones).

En general, es malo para utilizar más de una variable global en JS. (Es imposible no utilizar al menos uno si usted está almacenando los datos para su uso futuro.) Esto se debe a que se encuentra con el mismo problema que todos los namespacing trata de resolver - lo que si usted escribió un método doSomething () y alguien escribió un método llamado doSomething ()

La mejor manera de evitar esto es hacer que una variable global que es un objeto de mantener todos sus datos y funciones. Por ejemplo:

var MyStuff = {};
MyStuff.counter = 0;
MyStuff.eventHandler = function() { ... };
MyStuff.doSomething = function() { ... };

// Later, when you want to call doSomething()...
MyStuff.doSomething();

De esta manera, usted está mínimamente contaminar el espacio de nombres global; sólo es necesario preocuparse de que alguien usa la variable global.

Por supuesto, nada de esto es un problema si su código no jugará con cualquier otra persona ... pero este tipo de pensamiento va a morder en el culo más tarde si alguna vez terminan usando código de otra persona. Mientras todo el mundo juega limpio en términos de nombres globales JS, todo el código puede llevarse bien.

No debe haber ningún problema al utilizar variables globales en el código todo el tiempo que les está envolviendo el interior de un namespase UNIQE / objeto (para evitar la colisión con los scripts que no son el suyo)

la adventage principal del uso de variables globales en javascript deriva del hecho de que JavaScript no es un lenguaje de tipo fuerte. allí, si pasa objetos somes complejos como argumentos a una función, se le probebly perder todo el Intellisence para aquellos objetos (dentro del ámbito de la función.) durante el uso de insteads objetos globales, preservará que Intellisence.

Yo personalmente encuentro muy usfull y ciertamente tienen lugar en mi código.

(por supuesto, uno debe hacer Alwayse el equilibrio adecuado entre locales y variables globals)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top