Sto provando a leggere la fonte Prototype. Sono arrivato a questa parte. (Sfortunatamente, questo frammento è all'inizio).Cosa fanno le parentesi vuote() dopo una dichiarazione di funzione in javascript?
Cosa significa questo()?
Browser: (function(){
var ua = navigator.userAgent;
var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';
return {
IE: !!window.attachEvent && !isOpera,
Opera: isOpera,
WebKit: ua.indexOf('AppleWebKit/') > -1,
Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1,
MobileSafari: /Apple.*Mobile.*Safari/.test(ua)
}
})(),
Mi riferisco all'ultima riga prima della virgola?
Nota: secondo JSLint si dovrebbe spostare i parenthese esecuzione finali all'interno delle parentesi delle funzioni: '(function() {...}()) ' – ErikE
@ErikE Alla fine fanno la stessa cosa, però. Vedi questa domanda: http://stackoverflow.com/questions/6645766/why-are-parenthesis-used-to-wrap-a-javascript-function-call –
Nessun argomento che facciano la stessa cosa. È una considerazione stilistica, perché non mettendo le parentesi di esecuzione all'interno della coppia esterna, non è chiaro che ciò che viene restituito sia il * risultato * della funzione piuttosto che * la funzione stessa *. – ErikE