6

Gibt es einen Unterschied zwischen ihnen? Ich habe beide Wege benutzt, weiß aber nicht, was man macht und was ist besser?Was ist der bessere Weg, um eine Funktion zu definieren?

function abc(){ 

    // Code comes here. 
} 

abc = function(){ 

    // Code comes here. 
} 

Gibt es einen Unterschied zwischen der Definition dieser Funktionen? So etwas wie i ++ und ++ ich?

+1

wiederholte Frage: http://stackoverflow.com/questions/336859/javascript-var-functionname-function- vs-function-Funktionsname – ikis

+0

Warum haben Sie das 'html' Tag wieder hinzugefügt? Diese Frage hat nichts mit HTML zu tun! –

+0

das ist becuase Leute können diese Frage zu der von Java betrachten - die objektorientierten Ansatz verwendet ... – Janak

Antwort

7
function abc(){ 

    // Code comes here. 
} 

Wird gehißt werden.

abc = function(){ 

    // Code comes here. 
} 

Wird nicht gehißt.

Zum Beispiel, wenn Sie getan haben:

abc(); 
function abc() { } 

Der Code wird ausgeführt, wie abc ist an der Oberseite des umschließenden Umfang hochgezogen.

Wenn Sie jedoch tat

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

abc deklariert, aber keinen Wert hat und daher nicht verwendet werden kann.

Was besser ist, ist eher eine Debatte über den Programmierstil.

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

+0

Nitpick: * "Dann' abc' ist noch nicht deklariert und kann nicht verwendet werden. "* Variablendeklarationen werden ebenfalls gehisst, daher wird die Variable deklariert, hat aber noch keinen Wert. –

+0

@FelixKling - aktualisiert. Prost. –

1

Kurze Antwort: keine.

Sie setzen die Funktion in den globalen Namespace. Jeder kann darauf zugreifen, jeder kann dies überschreiben.

Der Standard sichere Weg, es zu tun, ist alles in einer selbstaufrufende Funktion wickeln:

(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 
    }; 
})(); 
Verwandte Themen