Eventuali duplicati:
Difference between (function(){})(); and function(){}();funzioni self-executing
Sto cercando di capire alcune delle caratteristiche di JavaScript un po 'meglio. In The Definitive JavaScript
si dice che le funzioni di self-executing dovrebbero avere parentesi tonde loro in questo modo:
var obj = (function() {
var value = 0;
return {
increment: function(inc) {
value += typeof inc === "number" ? inc : 1;
},
getValue: function() {
return value;
}
}
})();
ma in JavaScript - The Good Parts
in cui questo esempio è tratto da, ha la funzione di cui sopra self-executing senza le parentesi tonde, in questo modo:
var obj = function() {
var value = 0;
return {
increment: function(inc) {
value += typeof inc === "number" ? inc : 1;
},
getValue: function() {
return value;
}
}
}();
Entrambi questi esempi lavoro per me, ma volevo chiedere se ci fossero differenze di funzionalità che avrei dovuto essere a conoscenza. Spero che questo non sia troppo banale. Volevo solo essere sicuro.
Grazie mille.
Edit:
Come Rob W ha sottolineato, c'è un altro filo sull'argomento. This is an excellent blog regarding this issue a cui era collegato l'altro post.
In questo caso, entrambi sono equivalenti. Quando ometti 'var obj =', quest'ultimo genera un errore. Quindi, attenersi alla # 1, a meno che i byte diventino costosi. –
Grazie mille Rob. Mi interessa solo sapere: in quali situazioni dovrei omettere 'var obj ='? Ciò restituirebbe l'oggetto all'oggetto di livello superiore, vero? Saluti. – Joe
@Joe dovresti omettere 'var obj' se vuoi che la funzione venga eseguita (cioè vuoi i suoi effetti collaterali) ma non restituisce alcun valore, o non ti interessa quale sia il suo valore di ritorno. – Alnitak