Funktionen

Sep 05, 2024 pm 07:00 PM

Funktionen

Einführung in Fns:

Grundlegende Bausteine ​​der Sprache.
Die wichtigsten Konzepte.
Fn – Codestück, das immer wieder verwendet werden kann.
{Invoking, Running, Calling} und Fn bedeuten alle dasselbe.
Fn – kann Daten als Argumente verwenden und Daten nach der Berechnung als Ergebnis zurückgeben.
Der Fn-Aufruf wird nach der Ausführung durch das von ihm zurückgegebene Ergebnis ersetzt.
Fns eignen sich perfekt für die Umsetzung des DRY-Prinzips
Argumente werden übergeben, Parameter sind Platzhalter, die an fn übergebene Werte empfangen.

Fn-Deklaration vs. Ausdruck:

Die Fn-Deklaration beginnt mit dem Schlüsselwort fn.
Fn-Ausdrücke sind anonyme Fn, die in einer Variablen gespeichert werden. Dann fungiert die Variable, die die Fn speichert, als Fn.
Der anonyme fn defn ist ein Ausdruck, und der Ausdruck erzeugt einen Wert. Fn sind nur Werte.
Fn sind kein String- oder Zahlentyp. Es ist ein Wert und kann daher in einer Variablen gespeichert werden.
Die Fn-Deklaration kann bereits aufgerufen werden, bevor sie im Code definiert, d. h. hochgezogen, wird. Dies funktioniert nicht mit dem Fn-Ausdruck.
Der Fn-Ausdruck zwingt den Benutzer, zuerst Fns zu definieren und sie dann später zu verwenden. Alles wird in Variablen gespeichert.
Beide haben ihren Platz in JS und müssen daher richtig beherrscht werden.
Fn-Ausdruck = im Wesentlichen ein in einer Variablen gespeicherter Fn-Wert

Arrow Fn wurde mit ES6 geliefert

Implizite Rückgabe für Einzeiler, für mehrere Zeilen ist eine explizite Rückgabe erforderlich.
Pfeil-FNS erhalten kein eigenes Schlüsselwort „dieses“
Lernen ist kein linearer Prozess, Wissen baut sich schrittweise auf. Man kann nicht alles auf einmal über eine Sache lernen.

## Default parameters
const bookings = [];

const createBooking = function(flightNum, numPassengers=1, price= 100 * numPassengers){
  // It will work for parameters defined before in the list like numPassengers is defined before its used in expression of next argument else it won't work.
  // Arguments cannot be skipped also with this method. If you want to skip an argument, then manually pass undefined value for it which is equivalent to skipping an argument
  /* Setting default values pre-ES6 days.
  numPassengers = numPassengers || 1;
  price = price || 199;*/

// Using enhanced object literal, where if same property name & value is there, just write them once as shown below.
  const booking = {
    flightNum,
    numPassengers,
    price,
  };

  console.log(booking);
  bookings.push(booking);
}

createBooking('AI123');
/*
{
  flightNum: 'AI123',
  numPassengers: 1,
  price: 100
}
*/ 

createBooking('IN523',7);
/*
{
  flightNum: 'IN523',
  numPassengers: 7,
  price: 700
}
*/ 

createBooking('SJ523',5);
/*
{
  flightNum: 'SJ523',
  numPassengers: 5,
  price: 500
} 
*/ 

createBooking('AA523',undefined, 100000);
/*
{
  flightNum: 'AA523',
  numPassengers: 1,
  price: 100000
}
*/ 
Nach dem Login kopieren

Aufrufen einer Fn aus einer anderen Fn heraus:

Sehr verbreitete Technik zur Unterstützung des DRY-Prinzips.
Unterstützt die Wartbarkeit
return beendet sofort den fn
return = um einen Wert aus dem fn auszugeben, beenden Sie die Ausführung
Drei Arten, fn zu schreiben, aber alle funktionieren auf ähnliche Weise, d. h. Eingabe, Berechnung, Ausgabe
Parameter = Platzhalter zum Empfangen von I/P-Werten, wie lokale Variablen eines Fn.

Wie die Übergabe von Argumenten funktioniert, d. h. Wert vs. Referenztypen

Primitive werden als Wert an fn übergeben. Der ursprüngliche Wert bleibt erhalten.
Objekte werden als Referenz an fn übergeben. Der ursprüngliche Wert wird geändert.
JS hat keinen Übergabewert als Referenz.

Die Interaktion verschiedener FNS mit demselben Objekt kann manchmal zu Problemen führen

Fns sind in JS erstklassig, daher können wir HO-Fns schreiben.

Fns werden als Werte behandelt, einfach als ein weiterer „Typ“ von Objekten.
Da Objekte Werte sind, sind FNS auch Werte. Kann daher auch in Variablen gespeichert, als Objekteigenschaften usw. angehängt werden.
Außerdem können FNS auch an andere FNS weitergegeben werden. Ex. Ereignis-Listener-Handler.
Rückkehr von FNS.
Fns sind Objekte, und Objekte haben in JS ihre eigenen Methodeneigenschaften. Daher kann fn sowohl Methoden als auch Eigenschaften haben, die für sie aufgerufen werden können. Ex-Anruf, Bewerben, Binden etc.

Fn höherer Ordnung: Fn, das ein anderes Fn als Argument empfängt, das ein neues Fn oder beides zurückgibt. Nur möglich, weil FNS in JS erstklassig sind
Fn, das im Rückruf-Fn übergeben wird, der von HOF aufgerufen wird.

Fns, die eine andere Fn zurückgeben, z. B. in Abschlüssen.

Erstklassige FNS und HOF sind unterschiedliche Konzepte.

Callback Fns Adv:
Erlauben Sie uns, Abstraktionen zu schaffen. Erleichtert die Betrachtung größerer Probleme.
Modularisieren Sie den Code in kleinere Teile, die er wiederverwendet werden kann.

// Example for CB & HOF:
// CB1
const oneWord = function(str){
  return str.replace(/ /g,'').toLowerCase();
};

// CB2
const upperFirstWord = function(str){
    const [first, ...others] = str.split(' ');
    return [first.toUpperCase(), ...others].join(' ');
};

// HOF
const transformer = function(str, fn){
  console.log(`Original string: ${str}`);
  console.log(`Transformed string: ${fn(str)}`);
  console.log(`Transformed by: ${fn.name}`);
};
transformer('JS is best', upperFirstWord);
transformer('JS is best', oneWord);

// JS uses callbacks all the time.
const hi5 = function(){
  console.log("Hi");
};
document.body.addEventListener('click', hi5);

// forEach will be exectued for each value in the array.
['Alpha','Beta','Gamma','Delta','Eeta'].forEach(hi5);
Nach dem Login kopieren

Fns geben eine weitere Fn zurück.

// A fn returning another fn.
const greet = function(greeting){
  return function(name){
    console.log(`${greeting} ${name}`);
  }
}

const userGreet = greet('Hey');
userGreet("Alice");
userGreet("Lola");

// Another way to call
greet('Hello')("Lynda");

// Closures are widely used in Fnal programming paradigm.

// Same work using Arrow Fns. Below is one arrow fn returning another arrow fn.
const greetArr = greeting => name => console.log(`${greeting} ${name}`);

greetArr('Hola')('Roger');
Nach dem Login kopieren

„Sie werden nur dann Fortschritte machen, wenn Sie ein bestimmtes Thema gründlich verstanden haben“

call(), apply(), bind():

Wird verwendet, um das Schlüsselwort „dieses“ festzulegen, indem sein Wert explizit festgelegt wird.
call – akzeptiert eine Liste von Argumenten nach dem Wert des Schlüsselworts „this“.
apply – akzeptiert ein Array von Argumenten nach dem Wert des Schlüsselworts „this“. Es werden Elemente aus diesem Array übernommen und an Funktionen übergeben.

bind(): Diese Methode erstellt eine neue Funktion, bei der das Schlüsselwort this an das angegebene Objekt gebunden ist. Die neue Funktion behält den durch .bind() festgelegten Kontext bei, unabhängig davon, wie die Funktion aufgerufen wird.

call() und apply(): Diese Methoden rufen eine Funktion mit einem angegebenen Wert und Argumenten auf. Der Unterschied zwischen ihnen besteht darin, dass .call() Argumente als Liste akzeptiert, während .apply() Argumente als Array akzeptiert.

const lufthansa = {
  airline: 'Lufthansa',
  iataCode: 'LH',
  bookings: [],
  book(flightNum, name){
    console.log(`${name} booked a seat on ${this.airline} flight ${this.iataCode} ${flightNum}`);
    this.bookings.push({flight: `${this.iataCode} ${flightNum}`, name});
  },
};

lufthansa.book(4324,'James Bond');
lufthansa.book(5342,'Julie Bond');
lufthansa;


const eurowings = {
  airline: 'Eurowings',
  iataCode: 'EW',
  bookings: [],
};

// Now for the second flight eurowings, we want to use book method, but we shouldn't repeat the code written inside lufthansa object.

// "this" depends on how fn is actually called.
// In a regular fn call, this keyword points to undefined.
// book stores the copy of book method defuned inside the lufthansa object.
const book = lufthansa.book;

// Doesn't work
// book(23, 'Sara Williams');

// first argument is whatever we want 'this' object to point to.
// We invoked the .call() which inturn invoked the book method with 'this' set to eurowings 
// after the first argument, all following arguments are for fn.
book.call(eurowings, 23, 'Sara Williams');
eurowings;

book.call(lufthansa, 735, 'Peter Parker');
lufthansa;

const swiss = {
  airline: 'Swiss Airlines',
  iataCode: 'LX',
  bookings: []
}

// call()
book.call(swiss, 252, 'Joney James');

// apply()
const flightData = [652, 'Mona Lisa'];
book.apply(swiss, flightData);

// Below call() syntax is equivalent to above .apply() syntax. It spreads out the arguments from the array.
book.call(swiss, ...flightData);


Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonFunktionen. 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ß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)

Ersetzen Sie Stringzeichen in JavaScript Ersetzen Sie Stringzeichen in JavaScript Mar 11, 2025 am 12:07 AM

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

8 atemberaubende JQuery -Seiten -Layout -Plugins 8 atemberaubende JQuery -Seiten -Layout -Plugins Mar 06, 2025 am 12:48 AM

Nutzen Sie JQuery für mühelose Webseiten -Layouts: 8 Essential Plugins JQuery vereinfacht das Webseitenlayout erheblich. In diesem Artikel werden acht leistungsstarke JQuery -Plugins hervorgehoben, die den Prozess optimieren, insbesondere nützlich für die manuelle Website -Erstellung

Erstellen Sie Ihre eigenen AJAX -Webanwendungen Erstellen Sie Ihre eigenen AJAX -Webanwendungen Mar 09, 2025 am 12:11 AM

Hier sind Sie also bereit, alles über dieses Ding namens Ajax zu lernen. Aber was genau ist das? Der Begriff AJAX bezieht sich auf eine lose Gruppierung von Technologien, mit denen dynamische, interaktive Webinhalte erstellt werden. Der Begriff Ajax, ursprünglich von Jesse J geprägt

10 JQuery Fun- und Games -Plugins 10 JQuery Fun- und Games -Plugins Mar 08, 2025 am 12:42 AM

10 Fun JQuery Game -Plugins, um Ihre Website attraktiver zu machen und die Stickinität der Benutzer zu verbessern! Während Flash immer noch die beste Software für die Entwicklung von lässigen Webspielen ist, kann JQuery auch überraschende Effekte erzielen und zwar nicht mit reinen Action -Flash -Spielen vergleichbar sind, aber in einigen Fällen können Sie auch einen unerwarteten Spaß in Ihrem Browser haben. JQuery Tic Toe Game Die "Hello World" der Game -Programmierung hat jetzt eine Jquery -Version. Quellcode JQuery Crazy Word Kompositionsspiel Dies ist ein Spiel mit der Füllung, und es kann einige seltsame Ergebnisse erzielen, da das Wort nicht kennt. Quellcode JQuery Mine Sweeping Game

Wie erstelle ich meine eigenen JavaScript -Bibliotheken? Wie erstelle ich meine eigenen JavaScript -Bibliotheken? Mar 18, 2025 pm 03:12 PM

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

JQuery Parallax Tutorial - Animated Header Hintergrund JQuery Parallax Tutorial - Animated Header Hintergrund Mar 08, 2025 am 12:39 AM

Dieses Tutorial zeigt, wie ein faszinierender Parallaxen -Hintergrundeffekt mit JQuery erstellt wird. Wir werden ein Header -Banner mit geschichteten Bildern bauen, die eine atemberaubende visuelle Tiefe erzeugen. Das aktualisierte Plugin funktioniert mit JQuery 1.6.4 und später. Laden Sie die herunter

Laden Sie den Inhalt des Box dynamisch mit AJAX Laden Sie den Inhalt des Box dynamisch mit AJAX Mar 06, 2025 am 01:07 AM

Dieses Tutorial zeigt, dass dynamische Seitenfelder über AJAX geladen werden und sofortige Aktualisierung ohne vollständige Seiten -Nachladen ermöglicht werden. Es nutzt JQuery und JavaScript. Betrachten Sie es als einen benutzerdefinierten Content-Box-Loader im Facebook-Stil. Schlüsselkonzepte: Ajax und JQuery

So schreiben Sie eine Cookie-Less-Sitzungsbibliothek für JavaScript So schreiben Sie eine Cookie-Less-Sitzungsbibliothek für JavaScript Mar 06, 2025 am 01:18 AM

Diese JavaScript -Bibliothek nutzt das Fenster.name -Eigenschaft, um Sitzungsdaten zu verwalten, ohne sich auf Cookies zu verlassen. Es bietet eine robuste Lösung zum Speichern und Abrufen von Sitzungsvariablen über Browser hinweg. Die Bibliothek bietet drei Kernmethoden: Sitzung

See all articles