solucionar - JavaScript: alcance global
void(0) trackid=sp-006 (4)
Podría envolverlos en una función anónima como:
(function(){ /* */ })();
Sin embargo, si necesita reutilizar todas las funciones de javascript que ha escrito en otro lugar (en otras secuencias de comandos), es mejor que cree un único objeto global al que se pueda acceder. Cualquiera de las dos cosas:
var mySingleGlobalObject={};
mySingleGlobalObject.someVariable=''a string value'';
mySingleGlobalObject.someMethod=function(par1, par2){ /* */ };
o la alternativa, sintaxis más corta (que hace lo mismo):
var mySingleGlobalObject={
someVariable:''a string value'',
someMethod:function(par1, par2){ /* */ }
};
A continuación, se puede acceder más tarde desde otros scripts como:
mySingleGlobalObject.someMethod(''jack'', ''jill'');
Hoy en día, creo un archivo .js con muchas funciones y luego lo vinculo a mis páginas html. Eso funciona, pero quiero saber cuál es la mejor manera (buenas prácticas) para insertar js en mis páginas y evitar conflictos con el alcance ... Gracias.
Quizás no sea la MEJOR manera, pero muchos sistemas PHP (te estoy mirando, Drupal) toman el nombre de su plugin particular y lo anteponen a todos sus nombres de funciones. Podrías hacer algo similar, agregar el nombre de tu capacidad a los nombres de tus funciones: "mything_do_action ()"
Alternativamente, podría adoptar un enfoque más "OO" y crear un objeto que encapsule su capacidad y agregar todas sus funciones como funciones miembro en TI. De esa forma, hay una sola cosa en el ámbito global de la que preocuparse.
Una idea simple es usar un objeto que represente su espacio de nombres:
var NameSpace = {
Person : function(name, age) {
}
};
var jim= new NameSpace.Person("Jim", 30);
La mejor manera es crear un nuevo alcance y ejecutar allí su código.
(function(){
//code here
})();
Esto se usa mejor cuando se accede al alcance global como mínimo.
Básicamente, esto define una función anónima, le da un nuevo alcance y la llama.