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
}
*/ 

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);

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');

„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);


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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Heiße Themen

PHP-Tutorial
1511
276
Erweiterte JavaScript -Bereiche und Kontexte Erweiterte JavaScript -Bereiche und Kontexte Jul 24, 2025 am 12:42 AM

Der Umfang von JavaScript bestimmt den Zugangsumfang von Variablen, die in globale, Funktions- und Blockebene unterteilt sind. Der Kontext bestimmt die Richtung davon und hängt von der Funktionsaufrufmethode ab. 1. Scopes umfassen globaler Umfang (überall zugänglich), Funktionsumfang (nur innerhalb der Funktion gültig) und Blockebene (LET und const sind innerhalb von {} gültig). 2. Der Ausführungskontext enthält das variable Objekt, die Bereichskette und die Werte davon. Dies weist auf globale oder undefinierte in der normalen Funktion hin, die Methode richtet sich auf das Anrufobjekt, der Konstruktor auf das neue Objekt und kann auch explizit durch Anruf/Anwendung/Bindung angegeben werden. 3.. Verschluss bezieht sich auf Funktionen, die auf externe Bereiche zugreifen und sich erinnern. Sie werden häufig zur Kapselung und zum Cache verwendet, können aber verursachen

Vue 3 -Kompositions -API gegen Optionen API: Ein detaillierter Vergleich Vue 3 -Kompositions -API gegen Optionen API: Ein detaillierter Vergleich Jul 25, 2025 am 03:46 AM

Die Kompositionapi in VUE3 eignet sich besser für komplexe Logik- und Typableitung, und Optionsapi eignet sich für einfache Szenarien und Anfänger. 1. Optionsapi organisiert Code nach Optionen wie Daten und Methoden und hat eine klare Struktur, aber komplexe Komponenten werden fragmentiert. 2. Die Zusammensetzung verwendet ein Setup, um die verwandte Logik zu konzentrieren, die der Wartung und Wiederverwendung förderlich ist. 3. Compositionapi realisiert konfliktfreie und parameterizierbare logische Wiederverwendung durch komponierbare Funktionen, was besser ist als Mixin; 4. COMPOSECTI hat eine bessere Unterstützung für Typscript und eine genauere Typableitung; 5. Es gibt keinen signifikanten Unterschied in der Leistung und des Verpackungsvolumens der beiden; 6.

Wie bekomme ich den Wert eines ausgewählten Optionsfelds mit JS? Wie bekomme ich den Wert eines ausgewählten Optionsfelds mit JS? Jul 18, 2025 am 04:17 AM

Es gibt zwei Kernmethoden, um den ausgewählten Optionsknopfwert zu erhalten. 1. Verwenden Sie QuerySelector, um das ausgewählte Element direkt zu erhalten, und verwenden Sie die Eingabe [name = "Your-Radio-Name"]: Überprüfter Selektor, um das ausgewählte Element zu erhalten und das Wertattribut zu lesen. Es ist für moderne Browser geeignet und hat einen präzisen Code. 2. Verwenden Sie das Dokument. Darüber hinaus müssen Sie auf die Schreibweise des Namensattributs, die Behandlung von nicht ausgewählten Situationen und die dynamische Belastung des Inhalts achten

Mastering JavaScript -Parallelitätsmuster: Webarbeiter vs. Java -Threads Mastering JavaScript -Parallelitätsmuster: Webarbeiter vs. Java -Threads Jul 25, 2025 am 04:31 AM

Es gibt einen wesentlichen Unterschied zwischen den Webworkers und Javatheads von JavaScript in der gleichzeitigen Verarbeitung. 1. JavaScript nimmt ein Single-Thread-Modell an. Webworker ist ein unabhängiger Thread, der vom Browser bereitgestellt wird. Es ist geeignet, zeitaufwändige Aufgaben auszuführen, die die Benutzeroberfläche nicht blockieren, aber das DOM nicht bedienen können. 2. Java unterstützt echtes Multithreading von der Sprachebene, die über die Thread-Klasse erstellt wurde und für eine komplexe gleichzeitige Logik und die serverseitige Verarbeitung geeignet ist. 3.. Webworker verwenden Postmessage (), um mit dem Hauptfaden zu kommunizieren, der sehr sicher und isoliert ist. Java -Threads können Speicher teilen, sodass Synchronisierungsprobleme aufmerksam werden müssen. V.

Erforschen der Typ -Zwangsregeln in JavaScript Erforschen der Typ -Zwangsregeln in JavaScript Jul 21, 2025 am 02:31 AM

Das Typ -Casting ist das Verhalten der automatischen Konvertierung eines Werttyps in einen anderen Typ in JavaScript. Zu den allgemeinen Szenarien gehören: 1. Bei Verwendung von Operatoren, wenn eine Seite eine String ist, wird die andere Seite ebenfalls in eine Zeichenfolge konvertiert, wie z. B. '5' 5. Das Ergebnis ist "55"; 2. Im booleschen Kontext werden nicht-Boolenische Werte implizit in boolesche Typen wie leere Zeichenfolgen, 0, Null, undefined usw. konvertiert, die als falsch angesehen werden; 3.. Null nimmt an numerischen Operationen teil und wird in 0 umgewandelt, und undefined wird in NAN umgewandelt. 4. Die durch implizite Umwandlung verursachten Probleme können durch explizite Konvertierungsfunktionen wie Nummer (), String () und Boolean () vermieden werden. Das Beherrschen dieser Regeln hilft

Wie format man ein Datum in JS? Wie format man ein Datum in JS? Jul 20, 2025 am 12:10 AM

Formatdaten in JavaScript können durch native Methoden oder Bibliotheken von Drittanbietern implementiert werden. 1. Verwenden Sie natives Datumsobjektstich: Holen Sie sich das Datumsteil durch Getvollerweise, GetMonth, getDate und andere Methoden und spleifen Sie es manuell in yjyy-mm-dd und andere Formate, was für leichte Bedürfnisse geeignet ist und nicht auf Bibliotheken von Drittanbietern beruht. 2. Verwenden Sie die Tolocaledatestring -Methode: Sie können wie ein MM/DD/YYYY -Format gemäß den lokalen Gewohnheiten ausgeben, unterstützen Sie mehrsprachig, aber das Format kann aufgrund verschiedener Umgebungen inkonsistent sein. 3.. Verwenden Sie Bibliotheken von Drittanbietern wie Day.js oder Date-Fns: Bietet prägnante Syntax- und Richfunktionen, die für häufige Operationen geeignet sind oder wenn Erweiterbarkeit erforderlich ist, wie z. B. DayJS ()

Erstellen eines CLI -Tools mit Node.js Erstellen eines CLI -Tools mit Node.js Jul 24, 2025 am 03:39 AM

Initialisieren Sie das Projekt und erstellen Sie Package.json; 2. Erstellen Sie einen Eintragskriptindex.js mit Shebang; 3.. Registrieren Sie Befehle über Bin Fields in package.json; 4. Verwenden Sie Yargs und andere Bibliotheken, um die Befehlszeilenparameter zu analysieren. 5. Verwenden Sie NPMLink Local Test; 6. Hilfe, Version und Optionen hinzufügen, um die Erfahrung zu verbessern. 7. optional über NPMPublish veröffentlichen; 8. optional automatischen Abschluss mit Yargs; Erstellen Sie schließlich praktische CLI -Tools durch angemessene Struktur und Benutzererfahrungsdesign, erstellen Sie Automatisierungsaufgaben oder verteilen Sie Widgets und enden Sie sie mit vollständigen Sätzen.

Wie erstelle ich Elemente in JS? Wie erstelle ich Elemente in JS? Jul 25, 2025 am 03:56 AM

Verwenden Sie document.createelement (), um neue Elemente zu erstellen; 2. Anpassen von Elementen durch TextContent, Classlist, SetAttribute und andere Methoden; 3.. Verwenden Sie appendChild () oder flexibler append () -Methoden, um dem DOM Elemente hinzuzufügen. V. Der vollständige Vorgang besteht darin, → Anpassen → Add zu erstellen, und Sie können den Seiteninhalt dynamisch aktualisieren.

See all articles