Heim Web-Frontend Front-End-Fragen und Antworten Was ist bei der Verwendung von es6-Pfeilfunktionen zu beachten?

Was ist bei der Verwendung von es6-Pfeilfunktionen zu beachten?

Mar 23, 2022 pm 01:04 PM
es6 箭头函数

Hinweise: 1. Die Pfeilfunktion ändert den Punkt davon in der Funktion, um mit dem Punkt davon im übergeordneten Bereich übereinzustimmen. 2. Sie kann nicht als Konstruktor verwendet werden, das heißt, der neue Befehl kann nicht verwendet werden ; 3. Das arguments-Objekt kann nicht verwendet werden ;4. Der yield-Befehl kann nicht verwendet werden und kann nicht als Generatorfunktion verwendet werden.

Was ist bei der Verwendung von es6-Pfeilfunktionen zu beachten?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.

In der neuen Syntax von es6 erscheinen Pfeilfunktionen.

ES6 ermöglicht die Verwendung von „Pfeilen“ (=>) zum Definieren von Funktionen.

		function fun(a){ return a; }
// ↓ 去掉 function 在 ( ) 和 { } 之间添加 => 
		var fun = (a) => { return a; }  
// ↓ 如果只有一个形参可省略 ( ) 如果一个形参都没有,必须加( )         
		var fun = a => { return a; }  
// ↓ 如果函数体只有一句话,可省略{ },如果仅有的这句话还是 return, 则必须省略 return         
		var fun = a => a
Nach dem Login kopieren

Hinweise zu Pfeilfunktionen in ES6

(1) Die Pfeilfunktion ändert den Punkt von this in der Funktion, um mit dem Punkt von this im übergeordneten Bereich übereinzustimmen.

Das Objekt this im Funktionskörper ist das Objekt, in dem es definiert ist, und nicht das Objekt, in dem es verwendet wird.

(2) kann nicht als Konstruktor verwendet werden, das heißt, der neue Befehl kann nicht verwendet werden, da sonst ein Fehler ausgegeben wird.

(3) Das Argumentobjekt kann nicht verwendet werden, da das Objekt nicht im Funktionskörper vorhanden ist. Wenn Sie es verwenden möchten, können Sie stattdessen den Rest-Parameter verwenden.

(4) Der Yield-Befehl kann nicht verwendet werden, daher können Pfeilfunktionen nicht als Generatorfunktionen verwendet werden.

Von den oben genannten vier Punkten ist der erste Punkt besonders hervorzuheben. Der Zeiger dieses Objekts ist variabel, aber in einer Pfeilfunktion ist er fest.

function foo() {
  setTimeout(() => {
    console.log('id:', this.id);
  }, 100);
}

var id = 21;

foo.call({ id: 42 });
// id: 42
Nach dem Login kopieren

Im obigen Code ist der Parameter von setTimeout eine Pfeilfunktion. Die Definition dieser Pfeilfunktion wird wirksam, wenn die foo-Funktion generiert wird, und ihre tatsächliche Ausführung wartet erst 100 Millisekunden später. Wenn es sich um eine normale Funktion handelt, sollte diese bei der Ausführung auf das globale Objektfenster zeigen und zu diesem Zeitpunkt 21 ausgeben. Die Pfeilfunktion bewirkt jedoch, dass dies immer auf das Objekt zeigt, bei dem die Funktionsdefinition wirksam wird (in diesem Fall {id: 42}), sodass die Ausgabe 42 ist.
Mit der Pfeilfunktion kann dies in setTimeout an den Bereich gebunden werden, in dem es definiert ist, anstatt auf den Bereich zu verweisen, in dem es ausgeführt wird. Hier ist ein weiteres Beispiel.

function Timer() {
  this.s1 = 0;
  this.s2 = 0;
  // 箭头函数
  setInterval(() => this.s1++, 1000);
  // 普通函数
  setInterval(function () {
    this.s2++;
  }, 1000);
}

var timer = new Timer();

setTimeout(() => console.log('s1: ', timer.s1), 3100);
setTimeout(() => console.log('s2: ', timer.s2), 3100);
// s1: 3
// s2: 0
Nach dem Login kopieren

Im obigen Code werden zwei Timer innerhalb der Timer-Funktion eingerichtet, wobei Pfeilfunktionen bzw. normale Funktionen verwendet werden. Die this-Bindung des ersteren ist im Bereich definiert (d. h. die Timer-Funktion), und die this-Bindung des letzteren zeigt auf den Bereich, in dem sie ausgeführt wird (d. h. das globale Objekt). Nach 3100 Millisekunden wurde timer.s1 also dreimal aktualisiert, timer.s2 jedoch kein einziges Mal.

Die Pfeilfunktion kann diesen Punkt fixieren. Diese Funktion ist sehr hilfreich für die Kapselung von Rückruffunktionen. Unten sehen Sie ein Beispiel, bei dem die Rückruffunktion eines DOM-Ereignisses in einem Objekt gekapselt ist.

var handler = {
  id: '123456',

  init: function() {
    document.addEventListener('click',
      event => this.doSomething(event.type), false);
  },

  doSomething: function(type) {
    console.log('Handling ' + type  + ' for ' + this.id);
  }
};
Nach dem Login kopieren

In der Init-Methode des obigen Codes wird eine Pfeilfunktion verwendet, die dazu führt, dass diese in der Pfeilfunktion immer auf das Handler-Objekt zeigt. Andernfalls meldet die Zeile this.doSomething beim Ausführen der Rückruffunktion einen Fehler, da diese zu diesem Zeitpunkt auf das Dokumentobjekt verweist.

Die Fixierung dieses Zeigens liegt nicht daran, dass es einen Mechanismus gibt, um dies innerhalb der Pfeilfunktion zu binden. Der eigentliche Grund ist, dass die Pfeilfunktion überhaupt kein eigenes Dies hat, was dazu führt, dass das interne Dies das Dies des Äußeren ist Codeblock. Gerade weil es dies nicht hat, kann es nicht als Konstruktor verwendet werden.

Der Code zum Konvertieren der Pfeilfunktion in ES5 lautet also wie folgt.

// ES6
function foo() {
  setTimeout(() => {
    console.log('id:', this.id);
  }, 100);
}

// ES5
function foo() {
  var _this = this;

  setTimeout(function () {
    console.log('id:', _this.id);
  }, 100);
}
Nach dem Login kopieren

Im obigen Code zeigt die konvertierte ES5-Version deutlich, dass die Pfeilfunktion überhaupt kein eigenes This hat, sondern auf das äußere This verweist.

【Verwandte Empfehlungen: Javascript-Video-Tutorial, Web-Frontend

Das obige ist der detaillierte Inhalt vonWas ist bei der Verwendung von es6-Pfeilfunktionen zu beachten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So kehren Sie ein Array in ES6 um So kehren Sie ein Array in ES6 um Oct 26, 2022 pm 06:19 PM

In ES6 können Sie die Methode reverse() des Array-Objekts verwenden, um eine Array-Umkehrung zu erreichen. Diese Methode wird verwendet, um die Reihenfolge der Elemente im Array umzukehren, wobei das letzte Element zuerst und das erste Element zuletzt gesetzt wird .umkehren()". Die Methode reverse() ändert das ursprüngliche Array. Wenn Sie es nicht ändern möchten, müssen Sie es mit dem Erweiterungsoperator „…“ verwenden. Die Syntax lautet „[...array].reverse()“. ".

Ist Async für es6 oder es7? Ist Async für es6 oder es7? Jan 29, 2023 pm 05:36 PM

async ist es7. Async und Wait sind neue Ergänzungen zu ES7 und Lösungen für asynchrone Vorgänge. Man kann sagen, dass Async/Await syntaktischer Zucker für Co-Module und Generatorfunktionen ist und js asynchronen Code mit klarerer Semantik löst. Wie der Name schon sagt, bedeutet Async „asynchron“. Async wird verwendet, um zu deklarieren, dass eine Funktion asynchron ist. Es gibt eine strikte Regel zwischen Async und Wait.

So finden Sie in es6 verschiedene Elemente in zwei Arrays So finden Sie in es6 verschiedene Elemente in zwei Arrays Nov 01, 2022 pm 06:07 PM

Schritte: 1. Konvertieren Sie die beiden Arrays jeweils in Mengentypen mit der Syntax „newA=new Set(a); newB=new Set(b);“ 2. Verwenden Sie has() und filter(), um den Differenzsatz zu finden Mit der Syntax „new Set([...newA].filter(x =>!newB.has(x)))“ werden die Differenzmengenelemente in eine Mengensammlung aufgenommen und zurückgegeben. 3. Verwenden Sie Array. from, um die Menge in einen Array-Typ umzuwandeln, Syntax „Array.from(collection)“.

So verwenden Sie PHP-Pfeilfunktionen, um das Currying von Funktionen zu implementieren So verwenden Sie PHP-Pfeilfunktionen, um das Currying von Funktionen zu implementieren Sep 13, 2023 am 11:12 AM

So verwenden Sie PHP-Pfeilfunktionen, um das Currying von Funktionen zu implementieren Currying (Currying) ist ein Konzept der funktionalen Programmierung, das sich auf den Prozess der Konvertierung einer Funktion mit mehreren Parametern in eine Funktionssequenz bezieht, die nur einen einzelnen Parameter akzeptiert. In PHP können wir Pfeilfunktionen verwenden, um das Currying von Funktionen zu implementieren und so den Code prägnanter und flexibler zu gestalten. Die sogenannte Pfeilfunktion ist eine neue anonyme Funktionssyntax, die in PHP7.4 eingeführt wurde. Sein Merkmal besteht darin, dass es externe Variablen erfassen kann und nur einen Ausdruck als Funktionskörper hat.

Warum muss das Miniprogramm es6 in es5 konvertieren? Warum muss das Miniprogramm es6 in es5 konvertieren? Nov 21, 2022 pm 06:15 PM

Aus Gründen der Browserkompatibilität. Als neue Spezifikation für JS fügt ES6 viele neue Syntax und API hinzu. Moderne Browser bieten jedoch keine umfassende Unterstützung für die neuen Funktionen von ES6, daher muss ES6-Code in ES5-Code konvertiert werden. In den WeChat-Webentwicklertools wird babel standardmäßig verwendet, um den ES6-Syntaxcode des Entwicklers in ES5-Code umzuwandeln, der von allen drei Terminals gut unterstützt wird und Entwicklern hilft, Entwicklungsprobleme zu lösen, die durch unterschiedliche Umgebungen nur im Projekt verursacht werden Option „ES6 bis ES5“.

So implementieren Sie die Array-Deduplizierung in es5 und es6 So implementieren Sie die Array-Deduplizierung in es5 und es6 Jan 16, 2023 pm 05:09 PM

In es5 können Sie die for-Anweisung und die Funktion indexOf() verwenden, um eine Array-Deduplizierung zu erreichen. Die Syntax „for(i=0;i<array length;i++){a=newArr.indexOf(arr[i]);if( a== -1){...}}". In es6 können Sie den Spread-Operator Array.from() und Set verwenden, um Duplikate zu entfernen. Sie müssen zuerst das Array in ein Set-Objekt konvertieren, um Duplikate zu entfernen, und dann den Spread-Operator oder die Funktion Array.from() verwenden Konvertieren Sie das Set-Objekt zurück in ein Array.

Was bedeutet die temporäre Totzone von es6? Was bedeutet die temporäre Totzone von es6? Jan 03, 2023 pm 03:56 PM

In es6 handelt es sich bei der temporären Totzone um einen Syntaxfehler, der sich auf die Befehle let und const bezieht, die dafür sorgen, dass der Block einen geschlossenen Bereich bildet. Bevor eine Variable innerhalb eines Codeblocks mit dem Befehl let/const deklariert wird, ist sie nicht verfügbar und gehört zur „toten Zone“ der Variablen, bevor die Variable deklariert wird. ES6 legt fest, dass die Variablenheraufstufung in temporären Totzonen und in let- und const-Anweisungen nicht erfolgt, hauptsächlich um Laufzeitfehler zu reduzieren und zu verhindern, dass die Variable vor ihrer Deklaration verwendet wird, was zu unerwartetem Verhalten führen kann.

Ist die ES6-Karte bestellt? Ist die ES6-Karte bestellt? Nov 03, 2022 pm 07:05 PM

Die Karte ist geordnet. Der Kartentyp in ES6 ist eine geordnete Liste, in der die Schlüsselnamen und entsprechenden Werte alle Datentypen unterstützen, indem die Methode „Objext.is()“ aufgerufen wird Daher werden die Zahl 5 und die Zeichenfolge „5“ als zwei Typen beurteilt und können im Programm als zwei unabhängige Schlüssel erscheinen.

See all articles