如本例所示
javascript-use-variable-as-object-name
我正在使用 eval 来使用 DOM 属性从数组中选择一个元素。尽管用户没有直接的方法来更改输入,但我希望尽可能安全,并在评估变量之前确保变量确实是整数。
以下哪项是最好、最安全的方法?
$(".listitem").click(function(){
var id = $(this).attr("record-id");
if(!isNaN(new Number(id))){
Storage.search.nearby.currec = rowsHolder[eval(id)];
}else{
// send email to admin, shut down
}
});
或
$(".listitem").click(function(){
var id = $(this).attr("record-id");
if(parseInt(id)){
Storage.search.nearby.currec = rowsHolder[eval(id)];
}else{
// send email to admin, shut down
}
});
更多但非必需信息:
基本上,我从网上拉取一个大的 JSON 字符串,其中包含一组记录。使用 for 语句 ( for(i in array) ) 从信息构建表后,我将每一行插入名为 rowsHolder 的数组中,并为 tr 赋予属性record-id="i"。然后,当用户单击该行时,我调用您在上面看到的方法。我正在将 PhoneGap 与 JQuery Mobile 结合使用。
一如既往,感谢您的投入
-D
最佳答案
这里绝对没有理由使用eval
。
- 如果您的
id
是数字,请使用parseFloat(id)
获取它。没有必要,因为当用作属性名称时它会被转换回字符串。 - 如果您的
id
是整数,请使用parseInt(id, 10)
获取它。没有必要,因为当用作属性名称时它会被转换回字符串。 - 如果您的
id
是一个字符串,就让它成为一个字符串。无论如何,您使用它的属性名称都是一个。
关于javascript - 安全地使用 eval 将变量用作对象名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13823036/