Inhaltsverzeichnis
Einführung
Grundlegende Verwendung
Parameterdarstellung
Rückgabewertdarstellung
Erweitert
dieses
Best Practice
Heim Web-Frontend Front-End-Fragen und Antworten Beispielcode für die Praxis der ES6-Pfeilfunktion

Beispielcode für die Praxis der ES6-Pfeilfunktion

Aug 08, 2022 am 10:26 AM
es6

Dieser Artikel vermittelt Ihnen relevantes Wissen über Javascript, das hauptsächlich Probleme im Zusammenhang mit der Anwendung von Pfeilfunktionen vorstellt. Ausdrücke eignen sich besser für Orte, an denen ursprünglich anonyme Funktionen benötigt werden, und können nicht als Konstruktor verwendet werden Schauen Sie es sich gemeinsam an, ich hoffe, es wird für alle hilfreich sein.

Beispielcode für die Praxis der ES6-Pfeilfunktion

[Verwandte Empfehlungen: Javascript-Video-Tutorial, Web-Frontend]

Einführung

Die Syntax von Pfeilfunktionsausdrücken ist prägnanter als die von Funktionsausdrücken und verfügt nicht über eigene Argumente , super oder neues .target. Pfeilfunktionsausdrücke eignen sich besser, wenn ansonsten eine anonyme Funktion erforderlich wäre und diese nicht als Konstruktor verwendet werden kann. ---- MDN

Grundlegende Verwendung

Parameterdarstellung

(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
//相当于:(param1, param2, …, paramN) =>{ return expression; }

// 当只有一个参数时,圆括号是可选的:
(singleParam) => { statements }
singleParam => { statements }

// 没有参数的函数应该写成一对圆括号。
() => { statements }
Nach dem Login kopieren

Rückgabewertdarstellung

let add1 = (num1, num2) => {
  num1 + num2
};
let add2 = (num1, num2) => {
  return num1 + num2
};
let add3 = (num1, num2) => (num1 + num2);
let add4 = (num1, num2) => num1 + num2;

console.log(add1(2, 3));  // undefined
console.log(add2(2, 3)); // 5
console.log(add3(2, 3)); // 5
console.log(add4(2, 3)); // 5
Nach dem Login kopieren

Erweitert

//加括号的函数体返回对象字面量表达式:
let func = () => ({foo: 'bar'})
console.log(func()); // {foo: 'bar'}


//支持剩余参数和默认参数
(param1, param2, ...rest) => { statements }
(param1 = defaultValue1, param2, …, paramN = defaultValueN) => {
statements }

//同样支持参数列表解构
let f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
f();  // 6
Nach dem Login kopieren

dieses

Beispielcode für die Praxis der ES6-Pfeilfunktion

Best Practice

  • Wenn Sie müssen Verwenden Sie anonyme Funktionen oder Inline-Callback Funktionen mithilfe von Pfeilfunktionen. eslint: Prefer-Arrow-Callback, Arrow-Spacing

Warum? Die Syntax ist prägnanter und entspricht eher den Erwartungen
Wenn die Funktionslogik recht komplex ist, sollten Sie benannte Funktionen verwenden

// bad[1, 2, 3].map(function (x) {
  const y = x + 1;
  return x * y;});// good[1, 2, 3].map((x) => {
  const y = x + 1;
  return x * y;});
Nach dem Login kopieren
  • Wenn der Funktionskörper nur eine Anweisung enthält und diese Anweisung keine Nebenwirkungen hat. Verwenden Sie die Kurzform, um implizit zurückzukehren, oder die vollständige Form, um explizit zurückzukehren.
    eslint: Pfeilparens, Pfeilkörperstil
// bad
[1, 2, 3].map(number => {
  const nextNumber = number + 1;
  `A string containing the ${nextNumber}.`;
});

// good
[1, 2, 3].map(number => `A string containing the ${number}.`);

// good
[1, 2, 3].map((number) => {
  const nextNumber = number + 1;
  return `A string containing the ${nextNumber}.`;
});

// good
[1, 2, 3].map((number, index) => ({
  [index]: number,
}));

// No implicit return with side effects
function foo(callback) {
  const val = callback();
  if (val === true) {
    // Do something if callback returns true
  }
}

let bool = false;

// bad
foo(() => bool = true);

// good
foo(() => {
  bool = true;
});
Nach dem Login kopieren
  • Wenn der Ausdruck mehrere Zeilen einnimmt, verwenden Sie Klammern, um die Lesbarkeit zu verbessern

Warum? Der Anfang und das Ende der Funktion sind klarer

// bad['get', 'post', 'put'].map(httpMethod => Object.prototype.hasOwnProperty.call(
    httpMagicObjectWithAVeryLongName,
    httpMethod,
  ));// good['get', 'post', 'put'].map(httpMethod => (
  Object.prototype.hasOwnProperty.call(
    httpMagicObjectWithAVeryLongName,
    httpMethod,
  )));
Nach dem Login kopieren
  • Wenn die Funktion nur einen Parameter hat, lassen Sie die Klammern und die geschweiften Klammern weg. Andernfalls verwenden Sie immer die vollständige Schreibmethode, um die Konsistenz zu gewährleisten. eslint: Arrow-Parens
// bad[1, 2, 3].map((x) => x * x);// good[1, 2, 3].map(x => x * x);// good[1, 2, 3].map(number => (
  `A long string with the ${number}. It’s so long that we don’t want it to take up space on the .map line!`));// bad[1, 2, 3].map(x => {
  const y = x + 1;
  return x * y;});// good[1, 2, 3].map((x) => {
  const y = x + 1;
  return x * y;});
Nach dem Login kopieren
  • verwendet eine eindeutige =>-Syntax, um es von = zu unterscheiden. eslint: kein verwirrender Pfeil wenn es erstellt wird, hat es keine Konstruktionsfähigkeit und wird nach der Verwendung weggeworfen. Im Gegensatz zu gewöhnlichen Funktionen, die wiederverwendet werden, ist kein Konstruktorprototyp erforderlich, d. h. das Prototypattribut wird nicht automatisch generiert)

Das Programm erstellt keine Argumentobjekte für Pfeilfunktionen
  • Dies ist in einer normalen Funktion dynamisch, während dies in einer Pfeilfunktion auf das Objekt zeigt, das die Pfeilfunktion eng umschließt (bestimmt zum Zeitpunkt der Definition)
  • Die Pfeilfunktion kann dies nicht durch Binden, Aufrufen und Anwenden von Werten ändern, aber Sie können diese Methoden trotzdem aufrufen (der Wert davon wird jedoch nicht durch diese Methoden gesteuert)
  • [Verwandte Empfehlungen:
  • Javascript-Video-Tutorial
  • ,

    Web-Frontend

    ]

Das obige ist der detaillierte Inhalt vonBeispielcode für die Praxis der ES6-Pfeilfunktion. 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ßer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Artikel -Tags

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)

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

Ist Async für es6 oder es7?

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

So kehren Sie ein Array in ES6 um

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

So finden Sie in es6 verschiedene Elemente in zwei Arrays

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

Warum muss das Miniprogramm es6 in es5 konvertieren?

Ist eine es6-Syntax erforderlich? Ist eine es6-Syntax erforderlich? Oct 21, 2022 pm 04:09 PM

Ist eine es6-Syntax erforderlich?

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

Was bedeutet die temporäre Totzone von es6?

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

Ist die ES6-Karte bestellt?

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

So implementieren Sie die Array-Deduplizierung in es5 und es6

See all articles