0

如本例所示

javascript 使用变量作为对象名称

我正在使用 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

4

1 回答 1

2

绝对没有理由在eval这里使用。

  • 如果您id是一个数字,请使用parseFloat(id)它来获取它。不必要,因为当它用作属性名称时,它会被转换回字符串。
  • 如果你id是一个整数,使用parseInt(id, 10)它来获取它。不必要,因为当它用作属性名称时,它会被转换回字符串。
  • 如果你id是一个字符串,就让它成为一个字符串。无论如何,您使用它的属性名称将是一个。
于 2012-12-11T16:15:22.187 回答