Heim > Web-Frontend > js-Tutorial > Parameterübergabe und Aufruf der Funktionen setTimeout und setInterval in JavaScript_Grundkenntnisse

Parameterübergabe und Aufruf der Funktionen setTimeout und setInterval in JavaScript_Grundkenntnisse

WBOY
Freigeben: 2016-05-16 15:11:06
Original
1299 Leute haben es durchsucht

So übergeben Sie Parameter an setTimeout und setInterval
Sehen Sie sich den folgenden Code an:

var str = 'aaa'; 
var num = 2; 
function auto(num){ 
  alert(num); 
} 
setTimeout('auto(num)',4000); 

Nach dem Login kopieren

So etwas zu schreiben kann normal funktionieren, aber anstatt zu sagen, dass es sich um eine Parameterübergabe handelt, ist es besser zu sagen, dass es sich um eine direkt verwendete globale Variable handelt. Daher ist diese Schreibweise nicht erforderlich. Im Allgemeinen werden lokale Variablen als Parameter übergeben.

Ändern Sie den Code:

//var str = 'aaa'; 
var num = 2; 
function test(){ 
  var str = 'bbb'; 
  setTimeout('auto(str)',4000); 
} 
function auto(a){ 
  alert(a); 
} 
test(); 
Nach dem Login kopieren

Diese Schreibweise meldet einen Fehler. Wenn Sie die globale Deklaration von str auskommentieren, wird aaa ausgegeben, das heißt, die Funktion ruft weiterhin die globale Variable auf.
Schauen Sie sich den folgenden Code an:

//var str = 'aaa'; 
var num = 2; 
function test(){ 
  var str = 'bbb'; 
  setTimeout('auto("str")',4000); 
} 
function auto(a){ 
  alert(a); 
} 
test(); 

Nach dem Login kopieren

Achten Sie auf die obige Zeichenfolge. Wenn Sie auf diese Weise schreiben, wird „str“ ausgegeben, was bedeutet, dass str direkt als Parameter verwendet wird, nachdem der Timer die Funktion aufgerufen hat. Auf diese Weise übergebene Parameter sind immer Zeichenfolgen. Das ist nicht das Ergebnis, das wir wollen.

Um andere Parameter als Zeichenfolgen zu übergeben, können Sie Abschlüsse verwenden, siehe folgenden Code:

//var str = 'aaa'; 
var num = 2; 
function test(){ 
  var str = 'bbb'; 
  setTimeout(auto(str),4000); 
} 
function auto(str){ 
  return function(){ 
    alert(str); 
  } 
} 
test(); 

Nach dem Login kopieren

Das Ausgabeergebnis ist „bbb“. Wenn Sie Anführungszeichen zu auto(str) hinzufügen, wird ebenfalls ein Fehler gemeldet.
Natürlich ist es auch gut, so zu schreiben:

var num = 2; 
function test(){ 
  var str = 'bbb'; 
  //setTimeout(auto(str),4000); 
  setTimeout(function(){alert(str)},4000); 
} 
function auto(str){ 
  return function(){ 
    alert(str); 
  } 
} 
test(); 

Nach dem Login kopieren

Als Letztes ist zu beachten, dass die vom Timer aufgerufene Funktion ohne Anführungszeichen in Anführungszeichen gesetzt werden muss, wenn Sie keine Abschlüsse zum Übergeben von Parametern verwenden. Die obige Situation eignet sich auch für setInterval();


Funktionsaufrufe in setTimeout und setInterval
hat den folgenden Code:

var num = 2; 
function auto(){ 
  alert(num); 
} 
setTimeout(auto(),4000); 
Nach dem Login kopieren
In diesem Programm können Sie beim Testen sofort das Popup-Warnfeld sehen. Mit anderen Worten: Der Timer funktioniert nicht, wenn die Funktion gemäß der oben genannten Methode referenziert wird.

Ebenso funktioniert die obige Schreibmethode für setInterval nicht ordnungsgemäß. Das Programm kann nur einmal ein Warnfeld anzeigen und dann einen Fehler melden.

Ändern Sie den Timer auf

setInterval('auto()',4000); 
setTimeout('auto()',4000); 
Nach dem Login kopieren
Das Programm funktioniert gut.

Wie sieht es aus, wenn Sie zum Aufrufen einer Funktion nicht auto(), sondern einfach auto verwenden?

var str = 'aaa'; 
var num = 2; 
function auto(){ 
  alert(num); 
} 
//setInterval(auto,4000); 
setTimeout(auto,4000); 

Nach dem Login kopieren
Jedes auf diese Weise geschriebene Programm kann normal funktionieren

Wenn Sie automatisch Anführungszeichen hinzufügen

//setInterval('auto',4000); 
setTimeout('auto',4000); 

Nach dem Login kopieren
Beides funktioniert nicht richtig.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage