在运行函数之前定义变量值

时间:2013-06-27 23:54:16

标签: javascript arrays function undefined

我有一个数组数组(可以说是一个多维数组,在本例中为doors),其中waitpoint未定义。

var wait;
var point;
var doors = [
    [wait, doorWrap, 'regY', point, 10, 'bounceOut', 150, 5, 'bounceIn']
// ,[etc.]
];

我想循环doors数组,并且对于每次迭代,执行key()函数,并将doors条目作为参数。

multiKey(doors, 500, 600);

function multiKey (keys, point, wait) {
    for (var i = 0; i < keys.length; i++) {
            wait *= i;
            key.apply(this, keys[i]);
    }
}

500600传递到multiKey()函数后,我希望在point函数之前定义waitkey()会运行 - 但是,pointwait结果是undefined

有什么问题?我怎么能解决这个问题?

也很抱歉。我希望这个问题很清楚,因为我很难把问题写进去!感谢。

2 个答案:

答案 0 :(得分:1)

wait签名中的multiKey()wait数组中的doors是不同的值。

您可以为循环中的每个数组分配传递的值。

var doors = [
// --v--wait            --v--point
    [0, doorWrap, 'regY', 0, 10, 'bounceOut', 150, 5, 'bounceIn']
// ,[etc.]
];

multiKey(doors, 500, 600);

function multiKey (keys, point, wait) {
    for (var i = 0; i < keys.length; i++) {
            keys[i][0] = wait * i;
            keys[i][3] = point
            key.apply(this, keys[i]);
    }
}

JavaScript没有指针,并且在分配时始终复制其基本类型。因此,当您在其中加入undefienddoors时,您会将wait复制到point数组中。

然后,当您将初始值传递给multiKey函数时,它们会被分配到waitpoint参数,这些参数完全不同。然后,您将wait参数乘以i,但同样,这与数组中的值完全不同,因此您仍然只是从数组中传递undefined。 / p>

答案 1 :(得分:0)

pointwait 宣布但未定义。

我在point上看不到任何操作。