Attualmente sto lavorando tramite le applicazioni Web della singola pagina di Mikowski e Powell. Dopo aver lavorato con il semplice tutorial del Capitolo 1, sono confuso sul motivo per cui è necessario a return true
e return false
nelle funzioni toggleSlider()
, onClickSlider()
e initModule()
.Perché restituire vero o falso dalle funzioni?
Qual è il vantaggio aggiunto di farlo? Quando ho eseguito il codice seguente senza il return true
e return false
, ha funzionato esattamente come con le dichiarazioni di ritorno.
Qual è una situazione appropriata per la quale queste dichiarazioni di reso sono effettivamente utili e necessarie?
var spa = (function($) {
var configMap = {
extended_height: 434,
extended_title: 'Click to retract',
retracted_height: 16,
retracted_title: 'Click to extend',
template_html: '<div class="spa-slider"><\/div>'
},
$chatSlider,
toggleSlider, onClickSlider, initModule;
toggleSlider = function() {
var slider_height = $chatSlider.height();
if (slider_height === configMap.retracted_height) {
$chatSlider
.animate({
height: configMap.extended_height
})
.attr('title', configMap.extended_title);
return true;
} else if (slider_height === configMap.extended_height) {
$chatSlider
.animate({
height: configMap.retracted_height
})
.attr('title', configMap.retracted_title);
return true;
}
console.log("Nothing to extend or retract. No events fired.");
return false;
};
onClickSlider = function(event) {
console.log("Calling onClickSlider click event");
toggleSlider();
return false;
};
initModule = function($container) {
$container.html(configMap.template_html);
$chatSlider = $container.find('.spa-slider');
$chatSlider
.attr('title', configMap.retracted_title)
.click(onClickSlider);
return true;
};
return {
initModule: initModule
};
}(jQuery));
jQuery(document).ready(
function() {
spa.initModule(jQuery('#spa'));
}
);
body {
width: 100%;
height: 100%;
overflow: hidden;
background-color: #777;
}
#spa {
position: absolute;
top: 8px;
left: 8px;
bottom: 8px;
right: 8px;
border-radius: 8px 8px 0 8px;
background-color: #fff;
}
.spa-slider {
position: absolute;
bottom: 0;
right: 2px;
width: 300px;
height: 16px;
cursor: pointer;
border-radius: 8px 0 0 0;
background-color: #f00;
}
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="spa">
<div class="spa-slider"></div>
</div>
</script>
Per quanto posso dire, questi valori di ritorno non hanno alcuno scopo. Sospetto che sia solo lo stile personale dell'autore, gli piace avere valori di ritorno espliciti. 'toggleSlider' usa il valore di ritorno per indicare se ha fatto qualcosa, che potrebbe essere utile per il debug nella console, sebbene usi anche' console.log() 'per lo stesso scopo. – Barmar
@nhgrif Mi scuso. Ritiro il mio riferimento alla revisione del codice. Il mio punto tuttavia è che questo non sembra essere in discussione qui, in quanto non si tratta di un particolare problema per il quale il poster ha difficoltà a trovare una soluzione. – Claies
@Claies Quindi suggerisco di trovare una motivazione ravvicinata e di votarla, e magari di svenderla? Sei certo che questa domanda è fuori tema per SO, ma ha zero downvotes e zero voti ravvicinati. Per me, questa domanda sembra perfettamente adatta per SO, davvero. – nhgrif