2013-01-12 16 views
9

Eventuali duplicati:
Are “(function () { }) ()” and “(function () { } ())” functionally equal in JavaScript?Qual è la differenza tra queste tre forme di funzione anonima autoinviante?

sto leggendo il documento qui sotto.

http://addyosmani.com/resources/essentialjsdesignpatterns/book/#patternity

Quando ho guardato se questi esempi, l'auto-invocazione di una funzione anonima aveva tre forme.

L'uno era

(function() { 
    //do something 
})(); 

e un altro è stato

function() { 
    //do something 
}(); 

e l'altro era

(function() { 
    //do something 
}()); 

Qual è la differenza tra queste tre forme?

Grazie per la tua lettura!

+3

Il secondo è un errore di sintassi se sta da solo. –

risposta

6

Il primo e l'ultimo sono effettivamente identici. Le differenze sono una questione di stile.

Il secondo è pericoloso come (a seconda di dove è) potrebbe essere una funzione dichiarazione invece di una funzione espressione, e non è possibile richiamare immediatamente una dichiarazione di funzione.

1

La funzione di procedere non è sintassi valida:

function() { 
    //do something 
}(); 
Problemi correlati