2016-12-25 4 views
0

Bei der Übergabe von 'y' durch das Funktionsargument gibt es undefined zurück, aber ohne Argument gibt es den gültigen Wert zurück, aber warum wird es undefiniert zurückgegeben, wenn das Argument übergeben wird?Warum kehrt es undefiniert zurück? Was ist das Szenario?

var y = 'Hello World'; 
$("button").click(function(e){ 
    alert(y); 
    //--Returns Hello World 
}); 

var y = 'Hello World'; 
$("button").click(function(e,y){ 
    alert(y); 
    //--Returns Undefined 
}); 

Antwort

0

Das ist, weil Sie nicht vorbeiy zu sein die Funktion. es ist eine anonyme Funktionsdeklaration, die eine Argumentvariable, y benannt hat. Sie rufen diese Funktion nicht auf. Das Aufrufen dieser Funktion erfolgt über das Ereignis click.

click Ereignis nur ein Argument an die Callback-Funktion übergeben, die eine Event object ist. Aus diesem Grund ist die zweite Variable dieser Funktion standardmäßig nicht definiert.

+0

Das ist die Antwort, Danke. Konzept klar !!! –

+0

@NinjaBoy Ich bin froh, dass es geholfen hat. – Himal

0

Wenn Sie y Variable zugreifen möchten, entfernen Sie y von (e,y):

var y = 'Hello World'; 
$("button").click(function(e){ 
    alert(y); 
}); 

, wenn Sie Informationen über aktuelle event (in Ihrem Beispiel 'Klick') benötigen:

$("button").click(function(e){ 
    console.log(e); 
}); 
+0

Ich weiß, was Sie sagen, aber meine Frage ist, warum es undefiniert zurückgibt, wenn y als Argument verwendet? In der Tat ist das y bereits deklariert und der Wert wird ihm auch zugewiesen, warum gibt es dann undefiniert zurück, wenn es als Argument übergeben wird? Ist das verrücktes Verhalten von Javascript oder nicht dessen etwas anderes, was ich über ... wissen sollte? –

+0

Im Rahmen Ihrer Callback-Funktion bezieht sich "y" auf das Argument. Da jquery jedoch keinen zweiten Parameter an den Callback übergibt, ist der Wert von y nicht definiert. – schroffl

Verwandte Themen