我知道这可能是一个新手问题,但我很好奇它的主要好处 eval() - 哪里用得最好?我很感激任何信息.
Guf*_*ffa 44
eval最好使用该功能:从不.
它的目的是将字符串计算为Javascript表达式.例:
eval('x = 42');
Run Code Online (Sandbox Code Playgroud)
之前已经使用过很多,因为很多人不知道如何为他们想做的事情编写正确的代码.例如,为字段使用动态名称时:
eval('document.frm.'+frmName).value = text;
Run Code Online (Sandbox Code Playgroud)
正确的方法是:
document.frm[frmName].value = text;
Run Code Online (Sandbox Code Playgroud)
由于该eval方法将字符串作为代码执行,因此每次使用该字符串时,某人可能会在页面中注入有害代码.请参阅跨站点脚本.
该功能有一些合法用途eval.但是,你可能不会遇到真正需要它的情况.
Mat*_*Way 34
这是一个相当古老的问题,也许人们当时没有eval()正确考虑用例.一个很好的用途eval()是将热重新加载到后端或前端开发流程中.
基本上eval()可以让您在编辑器中编辑代码,并让它在没有重新启动的情况下修补正在运行的应用程序,并且不会丢失状态(取决于实现).您将需要监视文件更改的关联代码,并以某种方式将更改发送到您的应用程序,但eval()最终是将这些更改转换为实际js的方法.
编辑
我遇到的另一个用例:
您可以eval()在想要动态需要不需要编译的文件的事件中绕过webpack的编译过程(例如json)例如:
const data = eval('require')(`./emails/${recipient}/${type}.json`)
Run Code Online (Sandbox Code Playgroud)
在这方面,我认为写一个像eval()邪恶或永远不应该使用的陈述是完全错误的.像这样的毯子声明是真正的邪恶!
Imp*_*Imp 10
eval 可以执行(或评估)一串javascript代码.
因此,当您希望某人执行一串javascript代码时,它是适用的.例如,在一篇关于JavaScript的教育文章中,所以读者可以立即尝试:)
或者,如果您的网站面向程序员,您可能希望他们编写并执行自己的插件.
eval() 不应该在Javascript中使用.
eval()以前用于解析JSON字符串,但这种使用已经被更快,更安全的取代所取代JSON.parse.
| 归档时间: |
|
| 查看次数: |
38744 次 |
| 最近记录: |