首先是对不良头衔的批评,不知道如何在一行中解释这一点。
我有这个Javascript功能(为了问题的目的而被剥离)......
function change_col(zone){
var objects= zone1227.getObjects();
}
我将整数传递给函数。我有“zone1227”的地方,我希望1227是我传入的整数。
我试过这个;
var zonename = "zone" + zone;
var objects= zonename.getObjects();
但这不起作用。
这可能吗?对于传入的每个可能的整数,函数都存在,但是我希望保持代码紧凑,而不是使用硬编码函数名称的if语句的长列表。
答案 0 :(得分:2)
由于zone1227
显然是全局变量,因此它也可以写为window.zone1227
或window['zone1227']
。这意味着您可以实现您描述的内容,只需写下:
function change_col(zone){
var objects= window['zone' + zone].getObjects();
}
尽管如此,我同意Interrobang上面的评论。这不是一个很好的方法来完成你真正想要完成的任何事情。您不应该通过包含其名称的字符串来引用全局变量。
答案 1 :(得分:0)
不,你不能用字符串的值来引用变量,也不能将任何东西连接到变量名。编辑:事实证明你可以。你还是不应该。
是的,您可以避免使用长硬编码的if / elseif序列:使用数组。
然后你可以这样说:
function change_col(arr, i)
{
var objects= arr[i].getObjects();
}
电话会是这样的:
change_col(zone, 1227);