gpt4 book ai didi

javascript - 关于 javascript 中 eval() 的问题......为什么它是邪恶的,我如何在不使用它的情况下完成同样的事情?

转载 作者:行者123 更新时间:2023-11-29 15:05:33 25 4
gpt4 key购买 nike

我有一个可以正常工作的应用程序脚本,但我有一些 eval() 语句才能使它正常工作。我真的不明白为什么“eval 是邪恶的”,因为我一直在阅读,但我真正不明白的是当它是唯一可以做我需要它做的事情时如何避免使用它。

在我的脚本中,我有一堆产品。每个产品都有自己的一系列属性。还有一个包含所有数组名称的数组。当我运行不同的函数时,这些数组用于构建页面内容。我发现唯一可行的方法是这样做:

var schedule = {};  
$.each(productNameArray, function (i, name) {
schedule = eval(name);
// DO STUFF
});

简单地使用 name 传递一个字符串,而不读取它要引用的实际数组。 Eval 使它作为一个对象工作。

那么如何在不使用 eval() 的情况下完成此操作?

最佳答案

您正在做的是解析一个 JSON(类似)字符串。这是少数情况之一,其中 eval 实际上不是 evil

如果您可以 100% 信任数据从中到达客户端的服务器,那根本就不是真正的问题(谈论 eval 的安全问题)。

如果不是这种情况,您应该始终避免使用 eval(),因为任何被评估的代码都可以访问您的全局窗口对象cookie DOM 等,用于监视和发送数据。

关于为什么 eval 是邪恶的第二个大话题是性能。 eval() 在实际解释 ECMAscript 代码时速度很慢。那就是例如,使用 setTimeout 之类的

setTimeout("myfunction();", 2000); // don't do that

这应该总是这样写

setTimeout(myfunction, 2000);

让 Javascript 解析 Javascript,对性能有很大的影响。

关于javascript - 关于 javascript 中 eval() 的问题......为什么它是邪恶的,我如何在不使用它的情况下完成同样的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3458239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com