function myToggle(show) { //...bunch of codes here... show = typeof show == 'undefined' ? undefined : !show $(el).toggleClass('d-none', show ) } En la función anterior, show se invertirá (booleano) solo si está definido, luego pasará a toggleClass() de jQuery. d-none es una clase de Bootstrap para ocultar el elemento.
De modo que cuando:
myToggle() //this will toggle class d-none to the element myToggle(1) //this will remove class d-none from the element myToggle(0) //this will give class d-none to the elementEntonces mi pregunta, ¿podemos simplificar este código?
show = typeof show == 'undefined' ? undefined : !showComencemos con el hecho de que esto debería ser === , no solo == . Casi nunca quieres == en JS (no es Java o C++, siempre usa === a menos que sepas por qué no deberías ). Con eso, no necesita un typeof de control: solo verifique si su var no está undefined , directamente.
show = show === undefined? show : !show;Sin embargo, esto ignora cómo funciona .toggleClass() de jQuery . No toma "verdadero o falso o indefinido" como segundo argumento, toma un booleano, y "mostrar" es bastante explícito en su intención, por lo que la simplificación real es la más obvia:
show = !!show;