草庐IT

javascript - 在 JavaScript 中使用 eval() 函数时如何捕获全局常量变量更改错误

我尝试检查es6中的“变量”是否常量:consta=1;functiontest(){try{a=2;//throwsanerror}catch(error){console.log(error)}}test();但是当我使用eval()函数时,它不会抛出错误。consta=1;functiontest(){try{eval("a=2;")//notthrowsanerror}catch(error){console.log(error)}}test();我将常量设置为本地常量,函数eval确实会按预期抛出错误。functiontest(){try{consta=1;eval("a=2

javascript:转换一个用 eval 创建的对象

我有一组在整个应用程序中使用的javascript类。在一种情况下,我想从形状匹配我的一个类的ajax响应中评估一些json。我正在使用jqueryparseJSON方法为我进行评估。唯一的问题是我现在想调用我的类中定义的方法,但我知道该方法不会存在于已评估的对象上。让这个方法在我的新对象上可用的最好方法是什么。有没有办法“转换”它? 最佳答案 JavaScript中没有转换的概念。相反,您可以修改类的构造函数以接受普通对象。你如何做到这一点取决于你如何设置你的类,但可以简单地将对象的浅拷贝包含到类的新实例中:varMyClass=

javascript - 运行动态 Javascript 代码

我正在制作一个小游戏,其中一部分我想要一种非常简单的自定义编程语言。如果用户输入代码,例如variable"helloWorld"=5,“解释器”会将变量更改为var并将引号删除为普通JavaScript。我应该如何运行该代码?我读过有关eval()的内容,但我也读过它很慢,不应该使用。我研究过使用词法分析器、解析器和分词器创建编程语言,但我不打算创建那么深入的东西。任何指导方面的帮助都会很棒。 最佳答案 我假设您不需要“如何编写代码?”方面的帮助,而是如何执行用户脚本。关于评估:eval很慢吗?是的。慢到什么程度才算慢?如果脚本在

javascript - 使用 fs.readFileSync 和 eval 内容读取文件...哪个范围具有这些功能?如何访问?

我最近尝试将一个文件导入到我现有的node.js项目中。我知道这应该用一个模块来编写,但我包含了我这样的外部javascript文件:eval(fs.readFileSync('public/templates/simple.js')+'')simple.js的内容如下所示:if(typeofexamples=='undefined'){varexamples={};}if(typeofexamples.simple=='undefined'){examples.simple={};}examples.simple.helloWorld=function(opt_data,opt_sb

javascript - 为什么我收到这个 jsfiddle 错误,document.write 可以是 eval 的一种形式

我正在测试我在读书时找到的代码。我在JSfiddle中测试它时遇到此错误,document.write可以是eval的一种形式。vartext=''+'Thisisbold!';vartags=/[^]+|]*)>/g;vara,i;while((a=tags.exec(text))){for(i=0;i我在document.writeln()的两行上都收到了上述JSfiddle警告。 最佳答案 请注意,这只是一个警告-但应该得到尊重。它实际上是由一个名为JSLint的检查器生成的-http://www.jameswiseman.c

javascript - 为什么 Java 8 Nashorn (JavaScript) 模返回 0.0( double )而不是 0(整数)?

考虑以下代码示例:importjavax.script.ScriptEngine;importjavax.script.ScriptEngineManager;publicclassTester{publicstaticvoidmain(String[]args)throwsException{ScriptEnginese=newScriptEngineManager().getEngineByName("nashorn");Objecteval=se.eval("5%5");System.out.println("eval="+eval);System.out.println("ev

javascript - 为什么不是 eval() JSON?

据我所知,eval()被认为是不好的做法出于安全考虑,JavaScript中的JSON对象。如果JSON来自另一台服务器,我可以理解这种担忧。但是如果JSON是我自己的服务器提供的,是用PHP的json_encode创建的(让我们假设它不是buggy),简单地使用eval()是否合法?在JS中读取JSON还是有什么我目前想不到的安全问题?我真的不想处理动态加载JSON解析器的问题,我很乐意简单地使用eval().PS:我显然会使用原生的JSON对象,如果可用,但想回退到eval()适用于IE/Opera。 最佳答案 在您的场景中,问

javascript - 使用 eval() 定义 const 变量

当我尝试使用var定义变量时,一切正常。但是将其定义为const并没有按预期工作,并且该变量未定义。window.eval("varv=5;");document.body.innerHTML+=window.v===undefined;window.eval("constl=5;");document.body.innerHTML+=window.l===undefined;我已经在Chrome和Node.js上测试过它。我错过了什么吗?提前致谢! 最佳答案 在eval代码中使用let和const不会调用严格模式。let和cons

javascript - 带有净化输入的 eval() 的安全性

这个问题在这里已经有了答案:WhenisJavaScript'seval()notevil?(27个答案)Isusingjavascripteval()safeforsimplecalculationsininputs?(2个答案)关闭8年前。我想使用eval()来解决简单的方程式和逻辑表达式,例如12*(4+3)。当输入(可能不受信任)被清理并且只允许数字时,客户端eval的安全性如何,+-*/()|&!以及“真”和“假”这两个词?可用的方程式JS解析器对我来说太大而且功能太强大。我自己拼凑了一个,但是与评估相比,它的代码行很多,而且还不完美。编辑:是的,我想我特别想问的是,有人可以

javascript - 间接评估如何工作

这个问题在这里已经有了答案:(1,eval)('this')vseval('this')inJavaScript?(4个答案)关闭9年前。我在网上看到有人用下面的构造来获取全局对象(1,eval)('this')或者这个(0||eval)('this')您能解释一下它到底是如何工作的,以及相对于window、top等的优势吗?UPD:测试直接与间接eval调用:http://kangax.github.io/jstests/indirect-eval-testsuite/