Heim  >  Artikel  >  Web-Frontend  >  JS-Basis-Tutorial: Erlernen Sie anonyme Javascript-Funktionen

JS-Basis-Tutorial: Erlernen Sie anonyme Javascript-Funktionen

黄舟
黄舟Original
2016-12-15 10:55:291524Durchsuche

JS-Basis-Tutorial: Erlernen Sie anonyme Javascript-Funktionen

Es besteht kein Zweifel, dass John Resig ein sorgfältiger und nachdenklicher Mensch ist. Durch sein sorgfältiges Studium kann er auch die anonymen Funktionen herausfinden, die wir normalerweise verwenden mit etwas Neuem. Normalerweise tritt eine Rekursion auf, wenn sich eine Funktion selbst aufruft. Funktionsaufrufe wie die folgenden sind uns nicht unbekannt.

1.function yell(n){
2. return n > 0 ? .alert(yell(4))//Das Ergebnis ist: hiyaaaa;

Es gibt kein Problem mit einer einzelnen Funktion. Was passiert, wenn wir eine anonyme Funktion verwenden und sie in einem Objekt platzieren?

1.var ninja = {

2. yell: function(n){

3 return n > „; Wir erstellen ein neues Objekt und kopieren die Schreimethode von Ninja, und die Situation ist anders. Da sich die anonyme Funktion innerhalb von Ninja befindet, ist diese Methode immer noch ein Verweis auf die Yell-Methode des Ninja-Objekts. Das Problem entsteht, wenn wir das Ninja-Objekt neu definieren.


01.var ninja = {
02 🎜>05.};
06. var samurai = { yell: ninja.yell }; try {

09. warning(samurai.yell(4);

10.} catch(e){ 🎜>11. warning("Äh, das ist nicht gut! Wo ist Ninja.yell hin?" );

12.}

13.//Das Ergebnis ist: „Äh, das ist nicht gut Gut! Wo ist ninja.yell hingegangen? Instanzen des Ninja-Objekts, d. h.:

1.var ninja = {
2.       function(n){
3. return n > „a“ : „hiy“ 🎜>Jetzt werden wir die Ergebnisse erhalten, die wir brauchen. Dies ist natürlich eine andere Möglichkeit, die anonyme Funktion zu benennen, aber sie funktioniert gut :


01.var ninja = {  
04.                } 
06.alert((ninja.yell(4)) + " Funktioniert wie wir Erwarte es! „Die Methode ruft sich korrekt auf.“ );

Bei normalen Variablendeklarationen können wir auch versuchen, dies zu tun, wie zum Beispiel:

1.var ninja = function myNinja(){

2.  ​​ warning ( (ninja == myNinja) + " Diese Funktion heißt zwei Dinge - gleichzeitig!" );

3.}; 4.ninja();


Führen Sie die obige Funktion aus. Im IE sehen wir: „flase Diese Funktion heißt zwei Dinge – gleichzeitig!“, in FF sehen wir: „true Diese Funktion heißt zwei Dinge – und zwar gleichzeitig!“ Der Autor hat einmal darauf hingewiesen: Anonyme Funktionen können benannt werden, sie sind jedoch nur innerhalb der Funktion selbst sichtbar. Es scheint, dass dies nicht der Fall ist. Die Testergebnisse zeigen, dass es für IE nicht sichtbar ist, aber in FF ist das Ergebnis wie vom Autor erwartet. Gleichzeitig haben wir myNinja getestet und die Ergebnisse waren auch in IE und FF unterschiedlich.


1.alert( typeof myNinja);

2.//In FF ist es „undefinde“

3.//In IE ist es „function“

Es scheint, dass die Benennung einer anonymen Funktion im IE nur äußerlich sichtbar ist; in FF ist sie nur innerhalb der Funktion sichtbar. Tatsächlich können wir arguments.callee wie folgt verwenden, um die benötigten Ergebnisse zu erhalten:


1.var ninja = {
2. schreien: function(n){
3. ";
4. }
5.};
6.alert ( ninja.yell(4));

Arguments.callee ist für jede Funktion verfügbar und bietet uns eine zuverlässige Möglichkeit, auf die Funktion selbst zuzugreifen. Ich denke, diese Methode ist relativ einfach und zuverlässig.

Zusammenfassend lässt sich sagen, dass alle diese Methoden für uns im Umgang mit komplexen Codestrukturen von großem Nutzen sein werden. Durch die Verwendung kann unsere Codestruktur prägnanter und klarer gestaltet werden, was möglicherweise die ursprüngliche Absicht des Autors ist.

Das Obige ist das grundlegende JS-Tutorial: Erlernen des Inhalts anonymer Javascript-Funktionen. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)!


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