需要获取作为字符串发送的变量的值?

时间:2010-02-22 10:09:15

标签: javascript

我正在将一个字符串作为参数发送给一个函数,但是我已经在该名称中有一个全局变量,我想得到该变量的值,但是它的发送是未定义的。

我的示例代码

我有一个数组,如reg [0] [0],reg [0] [1],reg [1] [0],reg [1] [0],reg [2] [0],reg [ 2] [1]

我有一些全局变量,如tick1,tick2,tick3 ......

它的值为0,1或2

在一个叫做

的函数中
calc_score(id) //id will return as either tick1,tick2,tick3
{
    alert(eval("reg[id][1]")); // it should return the value of reg[0][1] if id is 0

}

但它不起作用。

id不会是数字,它将是字符串..那么我该怎么做呢?

3 个答案:

答案 0 :(得分:6)

shouldn't use eval这样的事情。如果您需要将id转换为数字,请使用一元+运算符:

calc_score(id) //id will return as either tick1,tick2,tick3 
{ 
    alert(reg[+id][1]); // it should return the value of reg[0][1] if id is 0 
} 

parseInt()

calc_score(id) //id will return as either tick1,tick2,tick3 
{ 
    alert(reg[parseInt(id, 10)][1]); // it should return the value of reg[0][1] if id is 0 
} 

<小时/> 如果您需要解析像“tick1,tick2”这样的字符串,那么您有几个选项。如果第一部分总是“tick”,你可以像这样切掉字符串的结尾:

calc_score(id)
{
    id = +id.slice(4);         // or +id.substring(4) if you prefer
    alert(reg[id][1]); 
}

如果tick1, tick2, tick3是全局变量,那么您应该通过窗口对象引用它们,而不是使用eval(),如下所示:

calc_score(id)   //id will return as either "tick1","tick2","tick3"
{
    alert(window[id]);
} 

答案 1 :(得分:0)

使用此:

alert(reg[Number(id)][1]);

当然,您应该先检查id是否可以转换为数字。我真的认为你不需要eval,除非你试图做一些你没有提到过的事情。

答案 2 :(得分:-1)

哦!您可以更改以下代码:

calc_score(id) //id will return as either tick1,tick2,tick3
{
    alert(eval("reg[" + id + "][1]")); // it should return the value of reg[0][1] if id is 0

}