0

首先为糟糕的标题道歉,不知道如何用一行来解释这一点。

我有这个 Javascript 函数(为了问题的目的而被删除)......

function change_col(zone){

    var objects= zone1227.getObjects();

}

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

我试过这个;

var zonename = "zone" + zone;

var objects= zonename.getObjects();

但这不起作用。

这可能吗?对于传入的每个可能的整数,函数确实存在,但我希望保持代码紧凑,而不是一长串带有硬编码函数名称的 if 语句。

4

2 回答 2

2

由于zone1227显然是一个全局变量,它也可以写成window.zone1227window['zone1227']。这意味着您可以通过编写以下代码来实现您所描述的:

function change_col(zone){

    var objects= window['zone' + zone].getObjects();

}

尽管如此,我同意 Interrobang 的上述评论。这不是完成您真正想要完成的任何事情的好方法。您不应该通过包含其名称的字符串来引用全局变量。

于 2012-09-12T19:03:44.323 回答
0

不,您不能使用字符串的值来引用变量,也不能将任何内容连接到变量名上。编辑:事实证明你可以。你还是不应该。

是的,您可以避免使用长硬编码的 if/elseif 序列:使用数组。

然后你可以这样说:

function change_col(arr, i)
{
    var objects= arr[i].getObjects();
}

电话将类似于:

change_col(zone, 1227);
于 2012-09-12T19:02:39.440 回答