JSFiddle - React, Tailwind, and code Playground
HTML
<!--
Задача: получить доступ к какой-нибудь "опасной"
функции (eval, alert, setTimeout и т. п.) или создать
переменную в глобальной области видимости, изменяя
только тело функции unsafeFunction.
-->
JavaScript
(function(){
console.log(sandbox(unsafeFunction));
function unsafeFunction(){
// your code begin
console.log(arguments);
console.log(this);
return 'some value';
// your code end
}
function sandbox(func){
var global=(function(){return this;}).call(null);
var str='(function(){';
str+='"use strict";';
for(var key in global){
if(key!='console'){ // console enabled
str+='var '+key+'=undefined;';
}
}
str+='var str=undefined;';
str+='var global=undefined;';
str+='var key=undefined;';
str+='var func=undefined;';
str+='return ('+func.toString()+').call({});';
str+='})();';
return eval(str);
}
})();