我有一个数组数组(可以说是多维数组,本例中为doors ),其中wait和point未定义。
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]);
}
}将500和600传递给multiKey()函数后,我本以为point和wait会在key()函数运行之前定义--但是,point和wait原来是undefined。
怎么啦?我该如何着手解决这个问题呢?
标题也很抱歉。我希望这个问题足够清楚,因为我很难把我的问题用语言表达出来!谢谢。
发布于 2013-06-28 08:07:09
multiKey()签名中的wait和doors数组中的wait是不同的值。
您可以将传递给循环中的每个Array的值赋给它们。
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没有指针,它的基本类型在赋值时总是被复制的。因此,当您在doors数组中包含wait和point时,就是将undefiend复制到这些数组中。
然后,当您将初始值传递给multiKey函数时,它们将被分配给wait和point参数,这两个参数是完全不同的。然后将wait参数乘以i,但这又是一个与数组中的值完全不同的值,因此仍然只是从数组传递undefined。
发布于 2013-06-28 08:03:41
已声明point和wait,但未定义。
我在point上看不到任何操作。
https://stackoverflow.com/questions/17355127
复制相似问题