Closures

Run Settings
LanguageJavaScript
Language Version
Run Command
function addTo(passed) { const add = function (inner) { // creating closure return passed + inner; //injecting var 'passed' in closure }; return add; } var addThree = addTo(3); var addOne = addTo(1); var addFour = addTo(4); console.log(addThree(3)); console.log(addOne(2)); console.dir(addFour);
var curry = function (fn) { var arity = fn.length; console.log('arity', arity); return function f1(...args) { console.log('f1 args', args); if (args.length >= arity) { console.log('enough arguments'); return fn(...args); } else { console.log('need more arguments'); return function f2(...moreArgs) { console.log('f2', moreArgs); var newArgs = args.concat(moreArgs); return f1(...newArgs); }; } }; }; var add = function (a, b, c) { return a + b + c; }; var curriedAdd = curry(add); var result = curriedAdd(1, 2, 3); console.log('result', result);
Editor Settings
Theme
Key bindings
Full width
Lines