WordPress : Javascript, virgules dans les instructions IF – essayer de comprendre ce code
Je travaille avec un thème WP appelé DIVI et en essayant de comprendre comment fonctionne leur Slider, je suis tombé sur ce code que j’essaie de comprendre :
window.et_pb_slider_init=function($this_slider){
var et_slider_settings={fade_speed:700,
slide:$this_slider.hasClass("et_pb_gallery")?".et_pb_gallery_item":".et_pb_slide"};
if($this_slider.hasClass("et_pb_slider_no_arrows")&&(et_slider_settings.use_arrows=!1),
$this_slider.hasClass("et_pb_slider_no_pagination")&&(et_slider_settings.use_controls=!1),
$this_slider.hasClass("et_slider_auto")){
et_slider_settings.slideshow=!0;
var et_slider_autospeed=/et_slider_speed_(d+)/g.exec($this_slider.attr("class"));
et_slider_settings.slideshow_speed=null===et_slider_autospeed?10:et_slider_autospeed[1]
}
$this_slider.parent().hasClass("et_pb_video_slider")&&(et_slider_settings.controls_below=!0,
et_slider_settings.append_controls_to=$this_slider.parent(),
setTimeout(function(){
$(".et_pb_preload").removeClass("et_pb_preload")
},500)),
$this_slider.hasClass("et_pb_slider_carousel")&&(et_slider_settings.use_carousel=!0),
$this_slider.et_pb_simple_slider(et_slider_settings)
}
Ce qui me déroute vraiment, c’est l’instruction IF à la ligne 5 et le code qui suit à la ligne 13.
I saw in another post here that when IF statements are separated by commas, each line is evaluated but only the last operand is returned – but I didn’t get that cos if only the last one is returned, what earthy point do the other operands have?! Unless they are actually changing variables – but I’ve never seen that done in an IF statement before, though IF were only for comparing values.
So I wondered, could this code :
if($this_slider.hasClass("et_pb_slider_no_arrows")&&(et_slider_settings.use_arrows=!1),
$this_slider.hasClass("et_pb_slider_no_pagination")&&(et_slider_settings.use_controls=!1),
$this_slider.hasClass("et_slider_auto")){
et_slider_settings.slideshow=!0;
var et_slider_autospeed=/et_slider_speed_(d+)/g.exec($this_slider.attr("class"));
et_slider_settings.slideshow_speed=null===et_slider_autospeed?10:et_slider_autospeed[1]
}
Also be written like this? :
if($this_slider.hasClass("et_pb_slider_no_arrows")){
et_slider_settings.use_arrows=!1
}
if($this_slider.hasClass("et_pb_slider_no_pagination")){
et_slider_settings.use_controls=!1
}
if($this_slider.hasClass("et_slider_auto")){
et_slider_settings.slideshow=!0;
var et_slider_autospeed=/et_slider_speed_(d+)/g.exec($this_slider.attr("class"));
et_slider_settings.slideshow_speed=null===et_slider_autospeed?10:et_slider_autospeed[1]
}
And what is happening in the code after, is that also somehow working like an IF statement?
$this_slider.parent().hasClass("et_pb_video_slider")&&(
et_slider_settings.controls_below=!0,
et_slider_settings.append_controls_to=$this_slider.parent(),
setTimeout(function(){
$(".et_pb_preload").removeClass("et_pb_preload")
},500)
),$this_slider.hasClass("et_pb_slider_carousel")&&(et_slider_settings.use_carousel=!0),
$this_slider.et_pb_simple_slider(et_slider_settings)
Is this code saying this :
if($this_slider.parent().hasClass("et_pb_video_slider")){
et_slider_settings.controls_below=!0;
et_slider_settings.append_controls_to=$this_slider.parent();
setTimeout(function(){
$(".et_pb_preload").removeClass("et_pb_preload")
},500)
};
if($this_slider.hasClass("et_pb_slider_carousel")){
et_slider_settings.use_carousel=!0
}
$this_slider.et_pb_simple_slider(et_slider_settings);
J’ai lu qu’avec l’opérateur &&, la deuxième partie n’est évaluée que si la première partie peut être convertie en true, donc je suppose que cela pourrait fonctionner comme et si l’instruction… ou est-ce que je comprends complètement mal? Est-ce fait pour optimiser un peu le code ? Sauvegarde de quelques caractères ? Ou est-ce que cela exprime quelque chose de différent de ce que je pense ?
Solution n°1 trouvée
Qui exécutera toutes les expressions et utilisera le dernier opérande comme condition. Si votre dernier opérande renvoie vrai, il est vrai. Cas d’utilisation : dans certains cas, nous devrons peut-être effectuer certaines opérations avant la condition.
0 commentaire