Detaillierte Erklärung des Unterschieds zwischen Pfeilfunktionen und normalen Funktionen in JavaScript

Detaillierte Erklärung des Unterschieds zwischen Pfeilfunktionen und normalen Funktionen in JavaScript

In diesem Artikel wird der Unterschied zwischen Pfeilfunktionen und normalen Funktionen in JavaScript zu Ihrer Information erläutert. Der spezifische Inhalt ist wie folgt

Pfeilfunktionen:

lass Spaß = () => {
    console.log('lalalala');
}

Gewöhnliche Funktionen:

Funktion Spaß() {
    console.log('lalla');
}

Pfeilfunktionen entsprechen anonymen Funktionen und vereinfachen Funktionsdefinitionen. Pfeilfunktionen haben zwei Formate. Eines enthält nur einen Ausdruck, wobei { ... } und return weggelassen werden. Es gibt auch einen Typ, der mehrere Anweisungen enthalten kann. In diesem Fall können { ... } und return nicht weggelassen werden.

Pfeilfunktionen sind anonyme Funktionen und können nicht als Konstruktoren oder mit „new“ verwendet werden.

let FunConstructor = () => {
    konsole.log('lll');
}

let fc = neuer FunConstructor();

Pfeilfunktionen binden keine Argumente, sondern verwenden stattdessen Restparameter ... Lösung

Funktion A(a){
  konsole.log(Argumente);
}
A(1,2,3,4,5,8); // [1, 2, 3, 4, 5, 8, Aufgerufener: ƒ, Symbol(Symbol.iterator): ƒ]


sei B = (b)=>{
  konsole.log(Argumente);
}
B(2,92,32,32); // Nicht abgefangener Referenzfehler: Argumente sind nicht definiert


sei C = (...c) => {
  console.log(c);
}
C(3,82,32,11323); // [3, 82, 32, 11323]

Pfeilfunktionen binden this nicht, sondern erfassen den this-Wert des Kontextes, in dem sie sich befinden, als ihren eigenen this-Wert

var obj = {
  eine: 10,
  b: () => {
    console.log(this.a); // undefiniert
    console.log(dies); // Fenster {postMessage: ƒ, Unschärfe: ƒ, Fokus: ƒ, Schließen: ƒ, Rahmen: Fenster, …}
  },
  c: Funktion() {
    konsole.log(diese.a); // 10
    console.log(dies); // {a: 10, b: ƒ, c: ƒ}
  }
}
obj.b(); 
obj.c();
var obj = {
  eine: 10,
  b: Funktion(){
    konsole.log(diese.a); //10
  },
  c: Funktion() {
     Rückkehr ()=>{
           konsole.log(diese.a); //10
     }
  }
}
obj.b(); 
obj.c()();

Wenn eine Pfeilfunktion eine Funktion über die Methode call() oder apply() aufruft, wird nur ein Parameter übergeben und dieser hat darauf keine Auswirkung.

let obj2 = {
    eine: 10,
    b: Funktion(n) {
        sei f = (n) => n + dies.a;
        gibt f(n) zurück;
    },
    c: Funktion(n) {
        sei f = (n) => n + dies.a;
        sei m = {
            eine: 20
        };
        gibt f.call(m,n) zurück;
    }
};
console.log(obj2.b(1)); // 11
console.log(obj2.c(1)); // 11

Pfeilfunktionen haben keine Prototypeigenschaft

var a = ()=>{
  Rückgabe 1;
}

Funktion b(){
  Rückgabe 2;
}

console.log(a.prototype); // undefiniert
console.log(b.prototype); // {Konstruktor: ƒ}

Pfeilfunktionen können nicht als Generatorfunktionen verwendet werden und können das Schlüsselwort „yield“ nicht verwenden.

Zusammenfassen

  • Das this einer Pfeilfunktion zeigt immer auf das this ihres Kontexts und keine Methode kann ihre Referenz ändern, wie etwa call() , bind() , apply()
  • Das „this“ einer normalen Funktion bezieht sich auf das Objekt, das sie aufruft.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Tipps zum Schreiben besserer Bedingungen und Übereinstimmungsbedingungen in JavaScript (Zusammenfassung)
  • Detaillierte Erklärung dieser Zeigerfunktion in JS
  • Eigenschaften von JavaScript-Pfeilfunktionen und Unterschiede zu normalen Funktionen
  • Welche Szenarien sind für JS-Pfeilfunktionen nicht geeignet?
  • In welchen Szenarien in JavaScript können Pfeilfunktionen nicht verwendet werden?
  • Einführung in bedingte Zugriffsattribute und Pfeilfunktionen in JavaScript

<<:  Nexus verwendet Nginx-Proxy zur Unterstützung des HTTPS-Protokolls

>>:  Installationsprozess von VMware vCenter 6.7 (grafisches Tutorial)

Artikel empfehlen

Sonderzeichen in HTML anzeigen (mit Sonderzeichen-Korrespondenztabelle)

Reproduktion des Problems Beim Bearbeiten mit HTM...

Zusammenfassung der 7 Protokolltypen in MySQL

In MySQL gibt es folgende Protokolldateien: 1: Pr...

Detaillierte Installation und Verwendung von RocketMQ in Docker

Um nach RocketMQ-Images zu suchen, können Sie auf...

So finden und löschen Sie doppelte Zeilen in MySQL

Inhaltsverzeichnis 1. So finden Sie doppelte Zeil...

jQuery-Plugin zum Erreichen einer Bildunterbrechung

In diesem Artikel wird der spezifische Code des j...

MySQL 5.7.20 Green Edition Installation Detailliertes grafisches Tutorial

Lassen Sie uns zunächst verstehen, was MySQL ist....

Detaillierte Erläuterung des CocosCreator-Projektstrukturmechanismus

Inhaltsverzeichnis 1. Projektordnerstruktur 1. As...

Detaillierte Erklärung der Linux-RPM- und Yum-Befehle und -Verwendung

RPM-Paketverwaltung Ein Verpackungs- und Installa...