He encontrado dos formas diferentes de definir/nombrar objetos y funciones en JavaScript que primero comprueban la existencia del nombre antes de usarlo. El problema es que no sé cuál es mejor (desde el punto de vista de la velocidad y la usabilidad) y es imposible usar los operadores booleanos en una búsqueda de Google para resolverlo.condicionales de definición de objeto JavaScript - ¿cuál es mejor?
El primero que veo con mayor frecuencia:
var myNewObject = myNewObject ? myNewObject : function() {
// Code goes here.
};
El segundo parece más concisa, pero sólo he visto uno o dos lugares, así que no sé si hay una norma o incluso un nombre para él:
var myNewObject = myNewObject || function() {
// Code goes here.
};
Funcionalmente, ambos hacen lo mismo y ambos parecen funcionar en todos los navegadores que puedo probar en Mi pregunta es - lo que es mejor y por qué.? Además, aunque la primera definición es esencialmente una línea condicional ... ¿a qué se llama el segundo?
el segundo es más común. Al menos para las personas que conocen el idioma ... – galambalazs
Genial, alguien sabe si esto funciona también con el prototipo: es decir, Array.prototype.forEach = Array.prototype.forEach || función (... lo estoy preguntando porque en el sitio web de Mozilla usan una función if (! Array.prototype.forEach) Array.prototype.forEach = (... –
@Marco Demaio Siguiendo la misma lógica es * debería * funcionar Sugeriría que lo golpee en un script de prueba y vea si lo hace.Todavía estás definiendo un método de objeto ... ya está en un espacio de nombre específico. – EAMann