function calcx1(a,b, D){ return some_formula1(a,b,D) } function calcx2(a,b, D){ return some_formula2(a,b,D) } function dcalc (a,b,c){ let D= dcalc.cache[[a,b,c].toString()] = (dcalc.cache || dcalc.cache={})[[a,b,c].toString()] || some_calc return function (func){ func(a, b, D) } } let calcWrap = dcalc(1,1,1) let x1 = calcWrap(calcx1) let x2 = calcWrap(calcx2) /// output: // ReferenceError: вычисляем is not defined
(ваш голос учтен)