我有一个数组数组(可以说是一个多维数组,在本例中为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
。
有什么问题?我怎么能解决这个问题?
也很抱歉。我希望这个问题很清楚,因为我很难把问题写进去!感谢。
答案 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没有指针,并且在分配时始终复制其基本类型。因此,当您在其中加入undefiend
和doors
时,您会将wait
复制到point
数组中。
然后,当您将初始值传递给multiKey
函数时,它们会被分配到wait
和point
参数,这些参数完全不同。然后,您将wait
参数乘以i
,但同样,这与数组中的值完全不同,因此您仍然只是从数组中传递undefined
。 / p>
答案 1 :(得分:0)
point
和wait
宣布但未定义。
我在point
上看不到任何操作。