JSFiddle - React, Tailwind, and code Playground

JavaScript

var context = {
    dtprop: new Date(),
    numprop: 12.34,
    strprop: "foobar",
    nullprop: null,
    undefprop: undefined,
    boolprop: true,
    arrprop: [1234, "5678", function () { return 5 + 4; }],
    regprop: /^asdf$/,
    objprop: {
        dtprop: new Date(),
        numprop: 43.21,
        boolprop: false,
        strprop: "barfoo"
    },
    fnprop: function (param) {
        console.log(" - uh oh:", param);
        return "ALL DONE";
    }
}

strFn = '(function() {' +
  '   console.log("evaluated code:");\n' +
  '   console.log("  dtprop is Date = ", dtprop instanceof Date, dtprop);\n' +
  '   console.log("  typeof numprop = ", typeof numprop, numprop);\n' +
  '   console.log("  typeof strprop = ", typeof strprop, strprop);\n' +
  '   console.log("  nullprop is null = ", nullprop === null);\n' +
  '   console.log("  typeof undefprop = ", typeof undefprop, undefprop);\n' +
  '   console.log("  typeof boolprop = ", typeof boolprop, boolprop);\n' +
  '   console.log("  arrprop is Array = ", arrprop instanceof Array, arrprop.length);\n' +
  '   console.log("  regprop is RegExp = ", regprop instanceof RegExp, "asdf".match(regprop));\n' +
  '   console.log("  objprop is Object = ", objprop instanceof Object, JSON.stringify(objprop));\n' +
  '   console.log("  typeof fnprop = ", typeof fnprop);\n' +
  '   return fnprop("I passed a param... ouch");' +
  '})()';

var engine = {
    toSourceString: function(obj, recursion) {
        var strout = "";
        
        recursion = recursion || 0;
        for(var prop in obj) {
            if (obj.hasOwnProperty(prop)) {
                strout += recursion ? "    " + prop + ": " : "var " + prop + " = ";
                switch (typeof obj[prop]) {
                    case "string":
                    case "number":
                    case "boolean":
                    case "undefined":
                        strout += JSON.stringify(obj[prop]);
                        break;
                        
      ...