是否可以将函数输入连接到另一个函数调用的文本?

时间:2012-09-12 18:55:33

标签: javascript

首先是对不良头衔的批评,不知道如何在一行中解释这一点。

我有这个Javascript功能(为了问题的目的而被剥离)......

function change_col(zone){

    var objects= zone1227.getObjects();

}

我将整数传递给函数。我有“zone1227”的地方,我希望1227是我传入的整数。

我试过这个;

var zonename = "zone" + zone;

var objects= zonename.getObjects();

但这不起作用。

这可能吗?对于传入的每个可能的整数,函数都存在,但是我希望保持代码紧凑,而不是使用硬编码函数名称的if语句的长列表。

2 个答案:

答案 0 :(得分:2)

由于zone1227显然是全局变量,因此它也可以写为window.zone1227window['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);