Purifying Functions - Functional Light JS v2 from Front-End Masters
James DiGioia
function foo(x) {y++;z = x * y;}var y = 5, z;foo(20);z; // 120foo(25);z; // 175
problem.js
function Foo(x, y) {var z;function foo(x) {y++;z = x * y;}foo(x);return [y, z];}
wraps.js
function foo(x) {y++;z = x * y;}function Foo(x) {var [origY, origZ] = [y,z];foo(x);var [newY, newZ] = [y, z];[y, z] = [origY, origZ];return [newY, newZ];}
adapts.js