Heim > Web-Frontend > js-Tutorial > Hauptteil

Reine Funktionen in der funktionalen JavaScript-Programmierung (Code) verstehen

不言
Freigeben: 2019-03-15 14:35:35
nach vorne
2462 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit dem Verständnis reiner Funktionen (Code) in der funktionalen JavaScript-Programmierung. Ich hoffe, dass er für Freunde hilfreich ist.

Wie versteht man reine Funktionen in der funktionalen Programmierung?

Konzept: Es hängt nicht vom Ausführungskontext ab und beeinflusst auch nicht die Variablen des Kontexts. Die Ausgabe wird nur durch die bestimmt Eingabe

Den Code verstehen

// 综上,非纯函数,输入依赖外部变量
let b = 1
function unPure(a) {
    return a + b
}

// 综上,非纯函数,输出改变外部变量
let o = {}
function unPure(object) {
    object.ex = 1
    return object
}

// 综上, 纯函数, 输出输入不影响外部变量
function pure(a) {
    let b = 1
    return a + b
}
Nach dem Login kopieren

Die Vorteile reiner Funktionen

Ich glaube, Sie haben herausgefunden, dass sowohl das Konzept als auch das Codeverständnis sehr einfach sind. Warum also reine Funktionen verwenden? Nachfolgend listen wir die Vorteile der Verwendung reiner Funktionen auf

  • Cacheability
  • Portabilität
  • Testbarkeit
Cacheability-Eigenschaften

Reine Funktionen können basierend auf Eingaben zwischengespeichert werden

// 下面的代码我们可以发现相同的输入,再第二次调用的时候都是直接取的缓存
let squareNumber  = memoize((x) => { return x*x; });
squareNumber(4);
//=> 16
squareNumber(4); // 从缓存中读取输入值为 4 的结果
//=> 16
squareNumber(5);
//=> 25
squareNumber(5); // 从缓存中读取输入值为 5 的结果
//=> 25
Nach dem Login kopieren

Wie implementiert man es? Schauen wir uns den folgenden Code an

const memoize = (f) => {
  const cache = {};
  return () => {
    var arg_str = JSON.stringify(arguments);
    // 关键就在这里,我们利用纯函数相同输入相同输出的逻辑,在这里利用cache做一个简单的缓存,当这个参数之前使用过时,我们立即返回结果就行
    cache[arg_str] = cache[arg_str] || f.apply(f, arguments);
    return cache[arg_str];
  };
};
Nach dem Login kopieren
Portabilität

Portabilität Um es ganz klar auszudrücken: Sex kann verwendet werden Wenn Sie es in Projekt A verwendet haben, können Sie es einfach mitbringen

Lassen Sie uns den Code noch einmal verstehen

// 我们注意看下方有两个注册的函数

// 不纯的, 如果B项目想要用到这个函数,很显然我们将其依赖的其它服务给搬过去
const signUp = function(attrs) {
  var user = saveUser(attrs);
  welcomeUser(user);
}
// 纯的, 我们再来看看下面这个纯函数写法,纯函数给了我们足够多的信息,我们想在B项目使用其功能只需将单个方法搬过去再给其注入需要的参数即可
const signUp = function(Db, Email, attrs) {
  return function() {
    var user = saveUser(Db, attrs);
    welcomeUser(Email, user);
  };
};
Nach dem Login kopieren
Testbarkeit

Zusammenfassend lässt sich sagen, dass wir uns nicht um andere externe Informationen kümmern müssen. Wir müssen der Funktion nur spezifische Eingaben geben und ihre Ausgabe bestätigen.

Zusammenfassung

  • Ausgabe hängt nicht von externen Variablen ab
  • Ausgabe ändert keine externen Variablen
  • Feste Eingabe Feste Ausgabe
  • Cachebar, portierbar, testbar

Das obige ist der detaillierte Inhalt vonReine Funktionen in der funktionalen JavaScript-Programmierung (Code) verstehen. 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