Heim  >  Artikel  >  Web-Frontend  >  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
WBOYOriginal
2016-05-16 15:55:071127Durchsuche

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();//调用方法 

Methoden ohne Parameter und Rückgabewerte:

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

Methoden mit Parametern und Rückgabewerten:

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

Hinweis 1:

Schauen Sie sich zuerst das Beispiel an:

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

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('这是一个方法'); 
} 

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

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

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

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

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

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

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

Stellungnahme:
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