2016-08-23 6 views
-2

Die Frage ist wirklich einfach, aber ich suchte überall konnte keine Antwort bekommen.Javascript Funktionsaufruf

add(); 
function add() 
{ 
//function code here 
} 

Der obige Code funktioniert in JavaScript obwohl Funktionsaufruf vor Funktionsdefinition ist aber würde in Sprache wie C oder C++ nicht. Kann mir jemand sagen warum?

+1

Suche Hebe –

+1

http://stackoverflow.com/questions/7506844/javascript-function-scoping-and-hoisting – Fritz

+0

nicht allzu schlecht fühlen Sie, das ist eine häufig gestellte Frage ist, weil Es ist schwer zu wissen, wonach man suchen soll, bis man davon gehört hat. – zzzzBov

Antwort

-1

Es ist bekannt als hoisting, und es ist definitiv eine Falle für Anfänger!

Grundsätzlich, wenn Sie diesen Code nehmen:

var x = 21; 
var y = add10(x); 

function add10(n) { return n + 10; } 

nach Hebe, wird es wie folgt bewertet:

function add10(n) { return n + 10; } 
var x; 
var y; 

x = 21; 
y = add10(x); 

Da die Erklärungen von den Definitionen getrennt sind, und „hochgezogen“, um die oben.

Witzigerweise würde dies fehlschlagen:

var x = 21; 
var y = add10(x); 

var add10 = function (n) { return n + 10; } 

weil es so bewertet wird:

var x; 
var y; 
var add10; 

x = 21; 
y = add10(x); // add10 is not a function (yet...)! 
add10 = function (n) { return n + 10; } 
Verwandte Themen