6

C'è qualche differenza tra loro? Ho usato entrambi i modi ma non so quale fa cosa e quale è meglio?quale è il modo migliore per definire una funzione?

function abc(){ 

    // Code comes here. 
} 

abc = function(){ 

    // Code comes here. 
} 

C'è qualche differenza tra la definizione di queste funzioni? Qualcosa come i ++ e ++ i?

+1

ripetuto Domanda: http://stackoverflow.com/questions/336859/javascript-var-functionname-function- vs-function-functionname – ikis

+0

Perché hai aggiunto nuovamente il tag 'html'? Questa domanda non ha nulla a che fare con l'HTML! –

+0

questo perché le persone potrebbero considerare questa domanda come quella di java - che usa un approccio orientato agli oggetti ... – Janak

risposta

7
function abc(){ 

    // Code comes here. 
} 

Viene issato.

abc = function(){ 

    // Code comes here. 
} 

Non verrà issato.

Per esempio, se avete fatto:

abc(); 
function abc() { } 

Il codice verrà eseguito come abc viene issata alla cima del campo di applicazione racchiude.

Se però fatto:

abc(); 
    var abc = function() { } 

abc è dichiarato, ma non ha alcun valore e, pertanto, non può essere utilizzato.

Per quanto riguarda il migliore è più un dibattito sullo stile di programmazione.

http://www.sitepoint.com/back-to-basics-javascript-hoisting/

+0

Nitpick: * "Quindi' abc' non è stato ancora dichiarato e non può essere utilizzato. "* Anche le dichiarazioni delle variabili vengono issate, quindi la variabile viene dichiarata, ma non ha ancora alcun valore. –

+0

@FelixKling - aggiornato. Saluti. –

1

Risposta breve: nessuno.

Si sta inserendo la funzione nel namespace globale. Chiunque può accedervi, chiunque può sovrascriverlo.

Il modo più sicuro standard per farlo è avvolgere tutto in una funzione di auto di chiamata:

(function(){ 
    // put some variables, flags, constants, whatever here. 
    var myVar = "one"; 

    // make your functions somewhere here 
    var a = function(){ 
     // Do some stuff here 

     // You can access your variables here, and they are somehow "private" 
     myVar = "two"; 
    }; 


    var b = function() { 

     alert('hi'); 
    }; 

    // You can make b public by doing this 
    return { 
     publicB: b 
    }; 
})();