JSFiddle - React, Tailwind, and code Playground

HTML

<input type="button" value="test no free variables" onclick="noFree()">
<input type="button" value="counter++ twice" onclick="counterTwice()">
<input type="button" value="add 5 and 2" onclick="add5and2()">
<input type="button" value="add 5 and 4" onclick="add5and4()">
<input type="button" value="FizzBuzz 3" onclick="testFizzBuzzWith3()">
<input type="button" value="FizzBuzz Full Test (lots of alerts)" onclick="testFizzBuzzFull()">

JavaScript

function makeHello() {
    var text = 'Hello';
    return function() {
        alert(text);
    }
}

function noFree() {
    var hello = makeHello();
    hello();
}

function makeCounter() {
    var counter = 0;
    return function() {
        alert(counter);
        counter++;
    }
}

var counter = makeCounter();
function counterTwice() {
    counter();
    counter();
}

function makeAdder(toAdd) {
    return function(value) {
        return toAdd + value;
    }
}

var add5 = makeAdder(5);
function add5and2() {
    alert(add5(2));
}
function add5and4() {
    alert(add5(4));
}

function makeFizzBuzz() {
    var map = {};
    return function(value) {
        if (map[value])
            return 'from mapper: ' + map[value];
        
        if (value % 15 === 0) {
            map[value] = 'FizzBuzz';
            return 'FizzBuzz';
        }
        else if (value % 3 === 0) {
            map[value] = 'Fizz';
            return 'Fizz';
        }
        else if (value % 5 === 0) {
            map[value] = 'Buzz';
            return 'Buzz';
        }
        else {
            map[value] = value.toString();
            return value.toString();
        }
    }
}
            
function testFizzBuzzWith3() {
    var fizzBuzzer = makeFizzBuzz();
    alert(fizzBuzzer(3));
}

function testFizzBuzzFull() {
    var fizzBuzzer = makeFizzBuzz();
    alert('3 should be Fizz = ' + fizzBuzzer(3));
    alert('5 should be Buzz = ' + fizzBuzzer(5));
    alert('15 should be FizzBuzz = ' + fizzBuzzer(15));
    alert('1 should be 1 = ' + fizzBuzzer(1));
    alert('15 should be FizzBuzz from mapper = ' + fizzBuzzer(15));
    alert('9 should be Fizz = ' + fizzBuzzer(9));
    alert('25 should be Buzz = ' + fizzBuzzer(25));
    alert('30 should be FizzBuzz = ' + fizzBuzzer(30));
}