使用 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/