function myToggle(show) {
//...bunch of codes here...
show = typeof show == 'undefined' ? undefined : !show
$(el).toggleClass('d-none', show )
}
In above function, show will be inverted (boolean) only if its defined, then pass into jQuery's toggleClass(). d-none is a Bootstrap class to hide element.
So that when:
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 element
So my question, can we simplified this code?
show = typeof show == 'undefined' ? undefined : !show
CodePudding user response:
Let's start with the fact that this should be ===, not just ==. You almost never want == in JS (it's not Java or C , always use === unless you actually know why you shouldn't). With that, you don't need a typeof check: just check whether your var is undefined, directly.
show = show === undefined? show : !show;
However, this ignores how jQuery's .toggleClass() even works. It doesn't take "true or false or undefined" as second argument, it takes a boolean, and "show" is pretty explicit in its intention, so the real simplication is the most obvious one:
show = !!show;
