Heim > Web-Frontend > js-Tutorial > Wesentliche JavaScript-Funktionen, die jeder Entwickler kennen sollte

Wesentliche JavaScript-Funktionen, die jeder Entwickler kennen sollte

Susan Sarandon
Freigeben: 2024-10-23 13:10:02
Original
1009 Leute haben es durchsucht

ssential JavaScript Functions Every Developer Should Know

JavaScript ist eine vielseitige Sprache, die heute einen Großteil des Webs unterstützt. Unter den zahlreichen Features zeichnen sich bestimmte Funktionen durch ihre Nützlichkeit und Leistungsoptimierung aus. In diesem Blog werden wir sechs wesentliche JavaScript-Funktionen untersuchen, die Ihr Codierungs-Toolkit erweitern können: Debounce, Throttle, Currying, Memoization, Deep Clone und eine Bonusfunktion als Zugabe.

1. Entprellfunktion

Die Entprellfunktion ist ein leistungsstarkes Tool zur Begrenzung der Rate, mit der eine Funktion ausgelöst werden kann. Dies ist besonders nützlich, um die Leistung in Szenarien wie der Größenänderung von Fenstern, dem Scrollen oder Tastenanschlagereignissen zu optimieren. Indem sichergestellt wird, dass eine Funktion erst nach einer bestimmten Verzögerung seit dem letzten Aufruf ausgeführt wird, können Leistungsengpässe vermieden werden.

function debounce(fn, delay) {
    let timeout;
    return function(...args) {
        clearTimeout(timeout);
        timeout = setTimeout(() => fn.apply(this, args), delay);
    };
}

// Usage
const logResize = debounce(() => console.log('Resized!'), 2000);
window.addEventListener('resize', logResize);
Nach dem Login kopieren

2. Drosselfunktion

Die Drosselfunktion stellt sicher, dass eine Funktion in einem bestimmten Zeitraum höchstens einmal ausgeführt wird. Dies ist besonders vorteilhaft für Ereignisse, die schnell ausgelöst werden können, wie z. B. Scrollen oder Größenänderung.

function throttle(fn, limit) {
    let lastFunc;
    let lastRan;
    return function(...args) {
        if (!lastRan) {
            fn.apply(this, args);
            lastRan = Date.now();
        } else {
            clearTimeout(lastFunc);
            lastFunc = setTimeout(() => {
                if ((Date.now() - lastRan) >= limit) {
                    fn.apply(this, args);
                    lastRan = Date.now();
                }
            }, limit - (Date.now() - lastRan));
        }
    };
}

// Usage
const logScroll = throttle(() => console.log('Scrolled!'), 2000);
window.addEventListener('scroll', logScroll);
Nach dem Login kopieren

3. Curry-Funktion

Currying ist eine funktionale Programmiertechnik, die eine Funktion mit mehreren Argumenten in eine Folge von Funktionen umwandelt, die jeweils ein einzelnes Argument annehmen. Dies ermöglicht eine größere Flexibilität und Wiederverwendbarkeit von Funktionen.

function curry(fn) {
    return function curried(...args) {
        if (args.length >= fn.length) {
            return fn.apply(this, args);
        }
        return function(...args2) {
            return curried.apply(this, [...args, ...args2]);
        };
    };
}

// Usage
function add(a, b, c) {
    return a + b + c;
}
const curriedAdd = curry(add);
console.log(curriedAdd(1)(2)(3)); // Output: 6
Nach dem Login kopieren

4. Memoisierungsfunktion

Memoization ist eine Optimierungstechnik, die die Ergebnisse teurer Funktionsaufrufe speichert und das zwischengespeicherte Ergebnis zurückgibt, wenn dieselben Eingaben erneut auftreten. Dies kann die Leistung für Funktionen mit aufwendigen Berechnungen erheblich verbessern.

function memoize(fn) {
    const cache = {};
    return function(...args) {
        const key = JSON.stringify(args);
        if (cache[key]) {
            return cache[key];
        }
        const result = fn.apply(this, args);
        cache[key] = result;
        return result;
    };
}

// Usage
const fibonacci = memoize(n => (n <= 1 ? n : fibonacci(n - 1) + fibonacci(n - 2)));
console.log(fibonacci(40)); // Output: 102334155
Nach dem Login kopieren

5. Deep-Clone-Funktion

Eine Deep-Clone-Funktion erstellt ein neues Objekt, das eine tiefe Kopie des Originalobjekts ist. Dadurch wird sichergestellt, dass auch verschachtelte Objekte kopiert und nicht referenziert werden.

function deepClone(obj) {
    return JSON.parse(JSON.stringify(obj));
}

// Usage
const originalObject = { x: 1, y: { z: 2 } };
const clonedObject = deepClone(originalObject);
clonedObject.y.z = 3;
console.log(originalObject.y.z); // Output: 2
Nach dem Login kopieren

6. Funktion „Array abflachen“.

Als Bonus führen wir die Flatten-Array-Funktion ein, die ein verschachteltes Array in ein eindimensionales Array umwandelt. Dies ist nützlich, um Datenstrukturen zu vereinfachen.

function flattenArray(arr) {
    return arr.reduce((accumulator, currentValue) => 
        accumulator.concat(Array.isArray(currentValue) ? flattenArray(currentValue) : currentValue), []);
}

// Usage
const nestedArray = [1, [2, [3, 4], 5], 6];
const flatArray = flattenArray(nestedArray);
console.log(flatArray); // Output: [1, 2, 3, 4, 5, 6]
Nach dem Login kopieren

Abschluss

Diese sechs JavaScript-Funktionen – Debounce, Throttle, Currying, Memoization, Deep Clone und Flatten Array – sind wesentliche Werkzeuge im Toolkit eines jeden Entwicklers. Sie steigern nicht nur die Leistung, sondern sorgen auch für saubereren und wartbareren Code. Durch die Integration dieser Funktionen in Ihre Projekte können Sie Ihre Anwendungen optimieren und das Benutzererlebnis deutlich verbessern. Viel Spaß beim Codieren!

Das obige ist der detaillierte Inhalt vonWesentliche JavaScript-Funktionen, die jeder Entwickler kennen sollte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage