2016-08-09 3 views
0

Ich versuche callMe im folgenden Code zu verwenden. Aber meine Ausgabe kommt als undefined.if ich letzte console.log(myGreeting); von functopn entfernen dann drucken „Hallo“ Wie es funktioniert und warum seine kommenden undefined.Wie funktioniert CallMe Funktion in Javascript

var myGreeting="Hello"; 
 
function callMe(){ 
 
console.log(myGreeting); 
 
var myGreeting = "HI"; 
 
console.log(myGreeting); 
 
}

+0

Sie Aint Aufruf 'callMe' Funktion, sind Sie? Keine Protokolle ... Ausführen des Snippets. – Ayan

+0

haben Sie diese CallMe() oder nicht bei irgendeinem Ereignis aufgerufen ?? –

+0

Ich tat es nicht. Und deshalb habe ich gefragt, wie es Arbeit ist. Ich war nicht klar mit msdn doc. –

Antwort

3

JavaScript verfügt über 2 Bereiche, lokale und globale . Local Scope ist der jeder function's scope. Wenn Sie 2 Variablen mit den gleichen Namen haben, die in der funciton's scope sind, wird zuerst auf scope zugegriffen. In Ihrem Beispiel ist die äußere myGreeter für die function ausgeblendet. Eine Variable, die als var definiert ist, arbeitet mit hoisting. So Ihr Code übersetzt in diesen

var myGreeting="Hello"; 

function callMe(){ 

    var myGreeting; // which is undefind 

    console.log(myGreeting); // undefined 

    myGreeting = "HI"; 

    console.log(myGreeting); // HI 
} 

, in dem jeder Variablen mit var Schlüsselwort und Funktionen Erklärung an die Spitze der Funktion bewegt.

Weitere sehen hier https://www.sitepoint.com/demystifying-javascript-variable-scope-hoisting/

+0

@shanky singh siehe hier –

+0

ja ich lese das Dokument. Danke für die Antwort. –

+0

@SurenSpalyan In Call-Funktion, warum wir Variable deklarieren müssen. Können wir nicht auf globale Variable zugreifen? –

Verwandte Themen