我正在尝试为我正在使用的HTML应用程序创建一个通用的i18n解决方案。我正在寻找使用eval()调用深度嵌套的Javascript对象的替代方法:假设以下HTML示例:及其配套的Javascript(使用jQuery):vari18n;i18n={html:{pageOne:{pageTitle:'LoremIpsum!'}}};$(document).ready(function(){$('[data-18n]').each(function(){varq;q=eval('i18n.'+$(this).attr('data-i18n'));if(q){$(this).text(q)
实际上,网络上的每个javascript指南都对我大喊eval不好,不要使用它,它是一个安全漏洞等等。最近我发现了window.execScript,它似乎和eval做同样的事情。就安全性或速度而言,一个比另一个更好吗? 最佳答案 window.execScript不跨浏览器,只有IE支持。 关于javascript-评估与执行脚本,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/
当我尝试将“eval”函数作为eval("020*05+05")时,它返回85而不是105。有人能解释一下为什么eval函数会这样吗?还建议任何解决这个问题的方法。 最佳答案 以零开头的数字常量(如“020”)被解释为八进制。对于C、C++、Java、Javascript以及大多数与C具有模糊外观关系的其他语言都是如此。如果出于某种原因你真的、真的需要使用“eval()”,并且你有这些奇怪的字符串,数字常量上有伪造的前导零,你可以尝试这样的事情:varanswer=eval(weirdString.replace(/\b0(\d+)
是否有一个函数可以在不实际评估代码段的情况下测试它是否是有效的JavaScript?也就是说,相当于functionvalidate(code){try{eval(code);}catch(err){returnfalse;}returntrue;};没有副作用。 最佳答案 是的,有。newFunction(code);如果代码不是有效的Javascript,则抛出一个SyntaxError。(ECMA-262,edition5.1,§15.3.2.1保证如果code不可解析,它将抛出异常。注意:此片段仅检查语法有效性。例如,代码仍
免责声明:我完全理解使用eval的风险/缺点,但这是一个我找不到任何其他方法的小众案例。在GoogleApps脚本中,仍然没有将脚本作为库导入的内置功能,因此许多工作表可以使用相同的代码;但是,有一个内置工具,我可以在其中从纯文本文件导入文本。这是评估代码:varid=[The-docID-goes-here];varcode=DocsList.getFileById(id).getContentAsString();varlib=eval(code);Logger.log(lib.fetchDate());这是我在外部文件中使用的一些示例代码:{fetchDate:function(
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhenisJavaScript’seval()notevil?我正在编写一个脚本,用户必须在其中输入货币金额,一些示例可能是(用户输入>>转换为),以美元为默认货币:50>>50.0USD50.5>>50.5USD50+1USD>>51.0USD50GBP>>50.0GBP我想让这一切尽可能顺利,因此我想使用JavaScript(这是一个基于PHP/MySql+JavaScript的网络应用程序)。我想使用正则表达式来过滤输入,通过eval()运行它并返回它。这是个坏主意吗?我读过一些关于eval()是安全
似乎Node.js(版本v0.10.13)返回包裹在(和\n)之间的命令,这是一个最小的例子:require('repl').start({'eval':function(cmd,context,filename,callback){callback(null,cmd);}});行为如下:$noderepl.js>asd'(asd\n)'>这是为什么呢?如果这个特征是documented然后我找不到它。另外,如果这是预期的行为,是否有比cmd=cmd.slice(1,-2);更好的解决方案? 最佳答案 该问题已得到解决(请参阅201
请考虑两段代码(第一段打印“Localeval”,第二段打印“Globaleval”):(functionf(){varx;try{eval("x");console.log('Localeval');}catch(e){console.log('Globaleval');}}())和varglobalEval=eval;(functionf(){varx;try{globalEval("x");console.log('Localeval');}catch(e){console.log('Globaleval');}}())事实证明,即使globalEval===eval的计算结果为
我有一个包含bool逻辑的字符串,类似于:((true&&true)||false&&!true)Javascript中安全评估此字符串以获得bool结果的最佳方法是什么?我想避免使用eval()。 最佳答案 我为另一个问题编写了这个bool字符串解析器:varexp1="(true&&true||false)&&(true||(false&&true))";varexp2="((true&&true)||false&&!true)";varexp3="(true&&!false)&&true&&!false";varexp4="(
我希望我的用户能够在我的JavaScript应用程序中使用JavaScript作为脚本语言。为此,我需要动态执行源代码。动态执行JavaScript似乎有两个主要选项:a)使用eval(...)方法(或varfunc=newFunction(...);)。b)添加节点到DOM(例如使用$('body').append(...))。只要我不使用任何import,这两种方法都可以正常工作动态执行的源代码中的语句。如果我包括import语句我收到错误消息Unexpectedidentifier.要执行的示例用户源代码:importAtomfrom'./src/core.atom.js':wi