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

Javascript 需要获取作为字符串发送的变量的值吗?,javascript,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[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不是数字,而是字符串。。那我该怎么做呢?

哦!您可以按如下方式更改代码:

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

}

哦!!您可以按如下方式更改代码:

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

}
使用以下命令:

alert(reg[Number(id)][1]);
当然,在执行之前,您应该检查
id
是否可以转换为数字。我真的不认为您需要
评估
,除非您正在尝试做您没有提到的其他事情。

使用以下方法:

alert(reg[Number(id)][1]);
当然,在执行之前,您应该检查
id
是否可以转换为数字。我真的认为你不需要
评估
,除非你正在尝试做一些你没有提到的事情。

你需要这样做。如果需要将
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()


如果您需要解析像“tick1,tick2”这样的字符串,那么您有几个选项。如果第一部分始终为“勾号”,则可以将字符串的末端切掉,如下所示:

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]);
} 
谢谢你这样做。如果需要将
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()


如果您需要解析像“tick1,tick2”这样的字符串,那么您有几个选项。如果第一部分始终为“勾号”,则可以将字符串的末端切掉,如下所示:

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表示一元+表示转换,这是我以前从未听说过的。@OregonGhost:它本质上与使用
Number()
进行转换相同,但在许多情况下都比较短且有用:我忘了强调“id将不是数字,而是字符串…”id将是字符串,但它包含一个数值,那么我该怎么做呢?id将类似于“str1”、“str2”等。。var str1将始终具有编号。。我已经在代码中指出了这一点,但不够清晰和大胆,无法抓住通知。抱歉..@Vijay,抱歉我误解了那部分。请参阅底部的“我的更新”。+1表示一元数+表示转换,这是我以前从未听说过的。@OregonGhost:它本质上与使用
Number()
进行转换相同,但在许多情况下都更短且有用:我忘了强调“id将不是数字,而是字符串…”id将是字符串,但它包含一个数值,那么我该怎么做呢?id将类似于“str1”、“str2”等。。var str1将始终具有编号。。我已经在代码中指出了这一点,但不够清晰和大胆,无法抓住通知。抱歉..@Vijay,抱歉我误解了那部分。在底部查看我的更新。谢谢。知道一个被否决的答案解决了一个问题真的很有趣。真是太神奇了。通常人们以不同的方式看待否决票,有时是用来表示错误答案的方法,有时是用来标记答案以提高其他答案的可视性。在这种情况下,可能不同意这是问题的最佳解决方案(因为使用了
eval()
)。尽管如此,还是让我为你平衡一下。谢谢。知道一个被否决的答案解决了一个问题真的很有趣。真是太神奇了。通常人们以不同的方式看待否决票,有时是用来表示错误答案的方法,有时是用来标记答案以提高其他答案的可视性。在这种情况下,可能不同意这是问题的最佳解决方案(因为使用了
eval()
)。尽管如此,还是让我给你算一算。