不要在标题上评判我,我知道eval是邪恶的,但我这样做是有原因的,而且会非常有限。事情是这样的:我想创建一个安全的空间,我可以在其中运行特定的(和受信任的)代码,并检索结果(如果它符合我的期望)。出于安全原因,我想将它从所有其他范围中删除(这个空间被要求提供结果,并且应该不能单独将任何内容导出到周围的范围)。我找到了一个似乎可行的解决方案,它也可以为执行添加上下文,但我不确定它是否有效,或者该系统中是否存在安全漏洞。你能告诉我它是否有问题吗?它实际上创建了与全局变量同名的本地变量,以防止访问它们。它还剥离了功能(我将添加功能以保留我想要保留的功能)。该函数声明为最接近全局变量,以避免更
它曾经有效。现在,当我添加一个断点时:saveSnippet:(title,imageUrl,role)=>{debugger;...chrome(53)中的结果是:我尝试使用它并将配置更改为'cheap-module-source-map'和'eval-source-map'和'source-map'。现在只有'eval-source-map'和'source-map'可以工作。webpack.config.js(Webpack1.13.2):varpath=require('path')varwebpack=require('webpack')varCompressionPlugi
我正在一个名为test的Foo1实例上动态创建一个函数。我正在使用eval创建此函数。我希望此函数可以访问Foo2类,但是我收到了ReferenceError:Foo2isnotdefined。我已经用Babel提出了一个关于这个的问题并且可以找到here如果您想自己运行示例代码,请从here下载它并按照README.MD中的说明进行重现。运行:npminstallnpmrunstartnaviagetolocalhost:8080HereisthedirectorystructureformyMinimal,Complete,andVerifiableexampleinmyenvir
这是交易,我们有一个很大的JS库需要压缩,但是YUIcompressor如果发现“eval”语句,它不会完全压缩代码,因为担心它会破坏其他东西。这很好,但是我们确切地知道什么正在被评估,所以我们不希望它变得保守,因为在MooToolsJSON.decode中有一个eval语句所以基本上问题是,是否有任何其他(可能是创造性的)方法来编写返回eval函数的表达式?我尝试了一些,但没有骰子:window['eval'](stuff);window['e'+'val'](stuff);//stuffrunsintheglobalscope,weneedlocalscopethis['eval'
为什么您不能在with语句下使用eval访问作用域变量?例如:(function(obj){with(obj){console.log(a);//printsoutobj.aeval("console.log(a)");//ReferenceError:aisnotdefined}})({a:"hello"})编辑:正如知识渊博的CMS所指出的,这似乎是一个浏览器错误(使用WebKit控制台的浏览器)。如果有人想知道我试图想出什么可憎的东西需要“邪恶的”eval和with--我想看看我是否可以让一个函数(用作回调)在另一个上下文中执行,而不是在它定义的上下文中执行。不,我可能(咳嗽)不
情况是:用户编写了一些js代码,它应该在某些数据(本地)上运行。但有时会出现无限循环或递归调用……这就是为什么我需要限制函数的执行时间而不是编辑函数本身(即使是这样——我应该在每个序列点之后插入检查吗?但是呢?递归调用?)对于这个奇怪的问题还有其他解决方案吗?也许eval可以给出一些代码的解析树或类似的东西? 最佳答案 一个可能的解决方案是使用WebWorkers.WebWorker在单独的线程中启动,并且可以终止。varworker=newWorker('my_task.js');...worker.terminate();缺点是
如果我像这样将函数放入字符串中:varfunctionString=function(message){console.log(message);}.toString();有什么方法可以将字符串转换回函数并调用它吗?我试过了eval(functionString)返回“UncaughtSyntaxError:Unexpectedtoken”,和functionString.call(this,"HI!");返回“undefinedisnotafunction”。在javascript中这甚至可能吗?提前感谢您的回复!编辑:这个问题的重点是函数已使用toString()转换为字符串。所以
我该怎么做?functionmyUIEvent(){variCheckFcn="isInFavorites";varitemSrc=ui.item.find("img").attr("src");if(eval(iCheckFcn(itemSrc))){alert("it'safavorite");}functionisInFavorites(url){returntrue;}//returnsboolean 最佳答案 首先不要使用eval()。functionmyUIEvent(){variCheckFcn=isInFavorit
为什么下一个代码是有效的Javascript代码?varglobal=(1,eval)('this');alert(global); 最佳答案 那是因为commaoperator返回它的第二个操作数(并计算两者)。您问题中的代码相当于:1;varglobal=eval('this');alert(global); 关于javascript-为什么此代码有效:"(1,eval)('this')",我们在StackOverflow上找到一个类似的问题: https
我在JS中使用eval时遇到了奇怪的行为。varf=function(){varx=10;returnfunction(){eval('console.log(x);');window['eval']('console.log(x);');}};f()();输出:10undefined:1console.log(x);^ReferenceError:xisnotdefined为什么使用eval显式捕获x而global['eval']却没有?即使global['eval']没有捕获x,为什么在已经捕获的eval之后无法看到x? 最佳答案