Diferencia de código

-xH

Entre la resaca y que estoy muy espeso no encuentro la diferencia entre esta ternaria y el condicional que tengo debajo. La consola me da Unexpected token ( en la segunda funcion del segundo trozo de codigo (la ternaria me funciona correctamente). A ver si alguien me puede explicar la diferencia por que yo no la entiendo.

	var addEvent = (document.addEventListener ? function(el, e, fn) {
			el.addEventListener(e, fn, false);
		} : function(el, e, fn) {
			el.attachEvent('on' + e, fn);
		}
	);
	var addEvent = function () {
	if (document.addEventListener) {
		function (el, e, fn) {
			el.addEventListener (e, fn, false);
		}
	} else {
		function (el, e, fn) {
			el.attachEvent ('on' + e, fn);
		}
	}
}
r2d2rigo

En el if/else estas asignando una funcion sin parametros que contiene otra funcion con parametros, mientras que en la ternaria estas asignando la funcion con parametros directamente.

2 2 respuestas
lebroN

#1 es lo que dice #2

En el primer caso, a addEvent le estás asignando una función, mientras que en el segundo caso, estás asignándole una función desde un principio, la cual contendrá otra función en su interior.

1 respuesta
-xH

#2 #3 Me di cuenta más tarde, pero es que claro declaraba la variable directamente con el If y me ponía en al consola Unexpected if y tiré por ahí. La verdad que no he resuelto aun como ponerlo y he dejado la ternaria pero es que tengo un compañero que es un hater de las ternarias jejej

1 respuesta
cabron

#4

var addEvent = (function () {
            if (document.addEventListener) {
                    return function (el, e, fn) {
                            el.addEventListener (e, fn, false);
                    }
            } else {
                    return function (el, e, fn) {
                            el.attachEvent ('on' + e, fn);
                    }
            }
    })();
2 2 respuestas
JuAn4k4

Como alternativa a #5

var addEvent;
if (document.addEventListener) {
    addEvent = function (el, e, fn) {
        el.addEventListener (e, fn, false);
    };
} else {
    addEvent = function (el, e, fn) {
        el.attachEvent ('on' + e, fn);
    };
}
1 respuesta
cabron

#6

De hecho yo lo haría así, me parece innecesariamente rebuscada la otra forma.

1 respuesta
-xH

#5 #7 Ty, sirvió bien. Me había olvidado de ese pedazo de código ajajja

Usuarios habituales

  • -xH
  • cabron
  • JuAn4k4
  • lebroN
  • r2d2rigo