- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个可以正常工作的应用程序脚本,但我有一些 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/
那就是我的第一个使用MVVM的项目,MVVM light。 我有一个列表框,该列表框从PersonList Observable集合中刷新,正常添加和删除刷新。问题是编辑项目时。 我寻找了解决该问题的
这个问题在这里已经有了答案: How do I return the response from an asynchronous call? (41 个回答) 关闭10 年前。 我有这个代码 var
我有一个很大的配置文件(用户),我需要将其转到正确的位置并设置一些默认值。 因为我有一个安装程序类,所以我在其中的配置文件中添加了一些参数设置,但在安装程序文件夹中创建了配置文件。 确保这些默认参数只
|AA|多对多|BB|多对多 |CC| 与连接表映射成为 |AA|--|AA_BB|--|BB|--|BB_CC|--|CC| (抱歉,我无法发布图片,声誉低) 编辑:简短的问题是为什么如果a创建Aa
我想创建这个例子 GET /my_store/products/_search { "query" : { "filtered" : { "query"
AWS 为我们提供了 Athena 来运行无服务器 Hive 查询,Azure 是否有任何服务可以让我们运行无服务器 Hive 查询。 最佳答案 @ clown 。我相信您正在寻找的 Hive 的 A
这让我抓狂......这很好用: jQuery(document).ready(function(){ setTimeout(function(){ jQuer
我是一名优秀的程序员,十分优秀!