JSFiddle - React, Tailwind, and code Playground

HTML

<span id="result"></span>

JavaScript

function factorial(n){
    var f = "var o = {" + 
        "q: '\\\''," +
        "b: '\\\\'," + 
        "r: 1," + 
        "n: $," +
	      "s: 'var o = {q: _q_b_q_q, b:_q_b_b_q, r: _r, n:_n, s: _q_s_q}; o.r *= o.n--; " + 
	      "o.n ? Object.keys(o).reduce(function(a, k){return a.split(_q__q + k).join(o[k])}, o.s) : o.r;'" +
    "};" +
    "o.r *= o.n--;" +
    "o.n ? Object.keys(o).reduce(function(a, k){return a.split('_' + k).join(o[k])}, o.s) : o.r;"
    f = f.replace("$", n);
  
    for(var i = 0; i < n; i++){
        if(parseInt(f)){
            throw new Error("Cheaters are not allowed.");
        }
	      f = eval(f);
    }
    return parseInt(f);
}

var n = 6;
var result = factorial(n);

document.getElementById("result").innerText = n + "! = " + result;