javascript - 评估是邪恶的问题

标签 javascript eval jslint

使用 JSlint 验证我的 javascript。

我收到一条错误消息,说 eval 是邪恶的!为什么会这样,有没有我可以使用的替代方案?

这是一个我正在使用 eval 的例子,我想找到一个解决方法。

我有一个这样的数组:

var Resources = {
message_1: 'Message 1',
message_2: 'Message 2',
message_3: 'Message 3',
message_4: 'Message 4'
};

我有一个返回数字的函数 (functionResult),可以是 1、2、3 或 4。所以我想在下面这行代码中做的是获取数组中的资源,该数组中的消息以结果结尾我的职能。

$('#divPresenter').html(eval($.validator.format('Resources.message_{0}', functionResult)));

有什么想法可以删除 eval 并用其他东西替换吗?

最佳答案

代替:

eval($.validator.format('Resources.message_{0}', functionResult))

只需使用:

Resources["message_" + functionResult]

JavaScript 中的所有对象实际上都是关联数组(也称为散列),而点语法 (a.b) 只是用于在散列 (a['b' ])。所以你根本不需要eval;只需将键构建为字符串,然后使用该键查找您的值。

关于javascript - 评估是邪恶的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3983133/

相关文章:

javascript - 我想删除重复添加的内容

javascript - 我如何获取从wasm(rust)到js的静态mut的地址?

node.js - 在 Node 服务器中使用 eval 是一个坏主意吗?

c# - 在运行时在 C# 中将字符串转换为可执行代码?

javascript - 如何正确返回空函数?

javascript - Jslint 意外的反斜杠

javascript - 使用事件委托(delegate)时有没有办法检查元素的属性?

javascript - 如何使用javascript在文本框上触发焦点事件?

binding - 在 clojure 上将列表评估为 let

javascript - 检查 JavaScript 是否存在意外分配