Heim > Web-Frontend > js-Tutorial > Hauptteil

Ideen und Quellcode zur Implementierung der Curry-Funktion in JavaScript

不言
Freigeben: 2018-11-20 15:22:45
nach vorne
2163 Leute haben es durchsucht

Was dieser Artikel Ihnen bringt, sind die Ideen und der Quellcode für die Implementierung von Curry-Funktionen in JavaScript. Ich hoffe, dass er für Sie hilfreich ist.

Implementierungseffekt

const curry_fn = curry(fn);
fn(1, 2, 3) == curry_fn(1)(2)(3);
Nach dem Login kopieren

Implementierungsidee

  1. Eingehende Parameter durch Schließung speichern

  2. Get die Anzahl der Parameter über das Längenattribut der Funktion

  3. Wenn die Anzahl der Parameter nicht ausreicht, geben Sie die Methode direkt zurück

  4. Die Zahl der gespeicherten Parameter Führen Sie die ursprüngliche Funktion aus, wenn die Anzahl der Parameter der ursprünglichen Funktion entspricht

  • Wenn Sie den Standardwert des ES6-Parameters verwenden, ist die Länge nicht gleich auf die tatsächliche Anzahl von Parametern

  • Parameter werden aus Argumenten erhalten, ES6 verwendet restliche Parameter direkt, um

Quellcode-Implementierung

function curry(fn) {
    var length = fn.length; //获取原函数的参数个数
    var args = []; // args存储传入参数
    return function curryFn() {
        // 将arguments转换成数组
        var curryArgs = Array.prototype.slice.call(arguments); 
        args = args.concat(curryArgs);
        if (args.length > length) {
            throw new Error('arguments length error')
        }
        // 存储的参数个数等于原函数参数个数时执行原函数
        if (args.length === length) {
            return fn.apply(null, args);
        }
        // 否则继续返回函数
        return curryFn;
    };
}
Nach dem Login kopieren
zu implementieren

ES6-Version

function curry(fn) {
    let length = fn.length;
    let args = [];
    return function curryFn(...curryArgs) {
        args = args.concat(curryArgs);
        if (args.length > length) {
            throw new Error('arguments length error')
        }
        if (args.length === length) {
            return fn(...args);
        }
        return curryFn;
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonIdeen und Quellcode zur Implementierung der Curry-Funktion in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage