Purifying Functions - Functional Light JS v2 from Front-End Masters

function foo(x) {
y++;
z = x * y;
}
var y = 5, z;
foo(20);
z; // 120
foo(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