Heim > Web-Frontend > js-Tutorial > Detaillierte Erläuterung von Methoden und anonymen Methodeninstanzen in Javascript_Javascript-Kenntnissen

Detaillierte Erläuterung von Methoden und anonymen Methodeninstanzen in Javascript_Javascript-Kenntnissen

WBOY
Freigeben: 2016-05-16 15:55:07
Original
1151 Leute haben es durchsucht

Die Beispiele in diesem Artikel beschreiben Methoden und anonyme Methoden in Javascript. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Javascript-Methode (Funktion)

Deklarationsfunktion

Beginnt mit der Funktion, gefolgt vom Funktionsnamen. Im Gegensatz zu C# und Java muss Javascript den Rückgabewerttyp und den Parametertyp nicht deklarieren. Kein Rückgabewert ist undefiniert.

Ein Beispiel soll es klarer machen:
Methode ohne Parameter und ohne Rückgabewert:

function f1(){
alert('这是一个方法');
}
f1();//调用方法 

Nach dem Login kopieren

Methoden ohne Parameter und Rückgabewerte:

function f2(){
return 100;
}
var result=f2();//声明一个变量,接收f1()中的返回值
alert(result);//100 

Nach dem Login kopieren

Methoden mit Parametern und Rückgabewerten:

function f3(n1,n2){
return n1+n2;
}
var result=f3(20,30);
alert(result);//50

Nach dem Login kopieren

Hinweis 1:

Schauen Sie sich zuerst das Beispiel an:

function f1(){
  alert('这是一个方法'); 
}
alert(f1());//弹出”这是一个方法”后,还会显示undefined

Nach dem Login kopieren

Grund: Wenn in js einer Variablen kein Wert zugewiesen wird, ist sie in diesem Fall undefiniert. In diesem Fall hat f1 () keinen Rückgabewert, sodass es sich um einen unbekannten Wert (undefiniert) handelt alarm(), und natürlich ist das Popup undefiniert

Hinweis 2:

alert(f1);//不写括号,会将f1整个代码以字符串形式显示出来:
function f1(){ 
alert('这是一个方法'); 
} 
Nach dem Login kopieren

In JavaScript gibt es keine Methodenüberladung

Nur ​​die zuletzt definierte Methode aufrufen:

function f1(n1,n2){ 
alert(n1+n2); 
} 
function f1(n1,n2){ 
alert(n1-n2); 
} 
f1(10,2);//8

Nach dem Login kopieren
Fazit: Egal wo sie aufgerufen wird, es wird nur die zuletzt definierte Methode aufgerufen.

Hinweis: Nummer undefiniert=undefiniert

function f1(n1,n2,n3){ 
alert(n1-n2+n3); 
} 
f1(10,2);
//NaN,因为没有给n3传值,n3就是undefined,
//数字加上undefined还是undefined

Nach dem Login kopieren
Die obige Schlussfolgerung: Es gibt keine Methodenüberladung in Javascript

Hinweis beim Definieren von Methoden:

Eine benutzerdefinierte Funktion darf nicht denselben Namen haben wie die integrierte Methode:

Verwenden Sie nicht denselben Namen wie die integrierten Methoden in JS oder DOM. Verwenden Sie beispielsweise keine Funktionsnamen wie „selectAll“ und „focus“.

Nicht denselben Namen wie die Systemfunktion haben. (Es gibt ein Problem beim Aufrufen Ihrer eigenen definierten Fokusmethode in einem Klickereignis. Sie hat denselben Namen wie die focus()-Methode des Systems)

Hinweis zum Schreiben von Regelklammern:

Im Allgemeinen folgt beim Schreiben von geschweiften Klammern in js direkt

function f1(){ 
return 
{ 
age:100}; 
} 
var s=f1(); 
alert(s.age);
//undefined。s结果是undefined,undefined.age必然还是undefined

Nach dem Login kopieren

Anonyme Methode (häufig verwendet)

Warum wird die Verwendung der anonymen Methode empfohlen?

1. Es gibt eine Methodenfunktion aa(){alert{'Ich bin ziemlich gutaussehend'}} in 1.js

2. Es gibt eine Methodenfunktion aa(){alert{'Ich werde immer schöner'}} in 2.js

3. Importieren Sie 1.js und 2.js nacheinander in index.html und rufen Sie aa() auf. Das Ergebnis zeigt: Ich werde immer schöner.

Fazit: Die aa()-Methode in 2.js überschreibt die aa() in 1.js

Was tun? Geben Sie keinen Methodennamen mehr an, sondern verwenden Sie eine anonyme Methode

Sehen wir uns zunächst ein Beispiel für die Zuweisung anonymer Methoden zu Variablen an:

var ff=function(n1,n2){ 
return n1+n2; 
}; 
alert(ff(20,30));//50

Nach dem Login kopieren
Schreiben Sie die anonyme Methode in eine Zeile:


Code kopieren Der Code lautet wie folgt:
(function (n1,n2){alert(n1 n2);} )(9 ,9);

Kleiner Fall: 1:

var x=1; 
var y=0; 
var z=0; 
var add=function (n){n=n+1;return n}; 
y=add(x);//结果是2,先调用上面add 
add=function(n){n=n+3;return n;}; 
z=add(x);//结果是4,调用上面临近的这个add 
alert(y+','+z);//2,4

Nach dem Login kopieren
Kleiner Fall 2:

function aa() 
{ 
  alert("aaa"); 
  return function(){alert("bbb");}; 
} 
alert(aa);//不写括号,会将aa方法的整个代码显示出来 
alert(aa());//aaa,function(){alert("bbb");}; aaa就不解释了,后面那一串是作为aa()的返回值显示 
alert(aa()());//aaa,bbb,undefined 
//下面分解上面这句进行解释 
var s=aa();//aaa 
alert(s());//s()就是function(){alert("bbb");};首先弹出bbb,其次该方法没有返回值,故弹出undefined

Nach dem Login kopieren
Ich hoffe, dass dieser Artikel für das JavaScript-Programmierdesign aller hilfreich sein wird.

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