我正在将一个字符串作为参数发送给一个函数,但是我已经在该名称中有一个全局变量,我想得到该变量的值,但是它的发送是未定义的。
我的示例代码
我有一个数组,如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不会是数字,它将是字符串..那么我该怎么做呢?
答案 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
}