JSFiddle - React, Tailwind, and code Playground

by TheDiamondDoge

JavaScript

function f(x) {
  return Math.random() * x; // random для удобства тестирования
}

function makeCaching(f) { 
	var cache = [];
  return function(num){
  	if (cache[num] !== undefined){
    	return cache[num];
    } else {
    	cache[num] = f.call(this, num);
      return cache[num];
    }
  }
}

f = makeCaching(f);

var a, b;

a = f(1);
b = f(1);
alert( a == b ); // true (значение закешировано)

b = f(2);
alert( a == b ); // false, другой аргумент => другое значение