Ich versuche, meinen Kopf um reine Funktionen zu wickeln, aber ich bin mir nicht sicher, ob ich es wirklich verstehe. Ich weiß, dass reine Funktionen den externen Zustand nicht mutieren sollten, und es sollte jedes Mal die gleiche Ausgabe zurückgeben, solange es die gleiche Eingabe hat.Reine Funktionen bei der Arbeit mit DOM Manipulation
Ich weiß, dass beispielsweise diese Funktion unrein ist, weil es den Warenkorb Variable mutiert, die anderen Teile des Programms verwenden können:
const addToCart = (cart, item) => {
cart.push(item);
return cart;
};
Die gleiche Funktion in einem reinen Zustand:
const addToCart = (cart, item) => {
const newCart = lodash.cloneDeep(cart);
newCart.push(item);
return newCart;
};
Das macht für mich Sinn. Ich habe gelernt, dass reine Funktionen immer etwas zurückgeben sollten.
Allerdings arbeite ich an ein paar Sachen, die mir die HTML5-Canvas-Element zu verwenden, erfordert, und ich habe diese Funktion, die die Leinwand löscht:
function clearCanvas(canvas) {
canvas.getContext('2d').clearRect(0, 0, canvas.width, canvas.height);
}
Wie kann ich die obige Funktion rein machen? Mir ist klar, dass es unrein ist, weil es nichts zurückgibt und auch den Zustand der Canvas-Variable verändert. Ist DOM-Manipulation von Natur aus unrein?
Jede Hilfe würde geschätzt :)
Dank für die Beantwortung danken. Das macht Sinn. –
@OlavGundersen kein Problem! Es ist eine vernünftige Frage zu stellen und es ist gut, dass Sie versuchen, auf diese Weise zu programmieren, es ist eine gute Angewohnheit, so schnell wie möglich zu lernen. – theonlygusti
Downvote warum? Ich selbst lerne immer noch, wenn ich etwas falsches gesagt habe, lass es mich wissen, wir sind alle hier um zu lernen. Ein unerklärter Downvote ist wertlos. – theonlygusti