Javascript 在运行函数之前定义变量值
我有一个数组(在本例中是多维数组,Javascript 在运行函数之前定义变量值,javascript,arrays,function,undefined,Javascript,Arrays,Function,Undefined,我有一个数组(在本例中是多维数组,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
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]);
}
}
多钥匙(门,500600);
功能多键(键、点、等待){
对于(变量i=0;i
在将500
和600
传递到multiKey()
函数之后,我希望point
和wait
会在key()
函数运行之前被定义,但是见鬼,point
和wait
结果是未定义的
怎么了?我怎样才能着手解决这个问题呢
标题也很抱歉。我希望这个问题足够清楚,因为我很难用语言表达我的问题!谢谢。点
和等待
已声明但未定义
我看不到对点
点
和等待
的操作已声明但未定义
我看不到对点
的操作多键()中的等待
和门
数组中的等待
是不同的值
可以将要传递的值分配给循环中的每个数组
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]);
}
}
var门=[
//--v--等等--v--点
[0,门套,'regY',0,10,'bounceOut',150,5,'bounceIn']
//,[等]
];
多钥匙(门,500600);
功能多键(键、点、等待){
对于(变量i=0;i
JavaScript没有指针,它的原语类型总是在赋值时被复制。因此,当在wait
和point
中包含时,您正在将undefined
复制到doors
数组中
然后,当您将初始值传递给多键
函数时,它们被分配给等待
和点
参数,这两个参数完全不同。然后将wait
参数乘以i
,但这与数组中的值完全不同,因此仍然只是从数组中传递未定义的。多键()中的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]);
}
}
var门=[
//--v--等等--v--点
[0,门套,'regY',0,10,'bounceOut',150,5,'bounceIn']
//,[等]
];
多钥匙(门,500600);
功能多键(键、点、等待){
对于(变量i=0;i
JavaScript没有指针,它的原语类型总是在赋值时被复制。因此,当在wait
和point
中包含时,您正在将undefined
复制到doors
数组中
然后,当您将初始值传递给多键
函数时,它们被分配给等待
和点
参数,这两个参数完全不同。然后将wait
参数乘以i
,但这与数组中的值完全不同,因此仍然只是从数组中传递undefined
。您没有在任何地方定义键
函数。这可能就是它未定义的原因。。。这是你说的唯一真正的问题。不清楚您在这里要做什么。@很抱歉,我省略了key()
函数,因为我认为它与此无关。但是它在我的代码中。您的multiKey()
签名中的wait
和doors
数组中的wait
是不同的值。您唯一声明的问题是key
是未定义的,您认为其中包含的如何定义key
是不相关的吗?你的代码是什么?它到底出了什么问题?@AlexWayne:我想他是说等待
和点
在键
函数中是未定义的。似乎有一种假设,所有wait
标识符将自动解析到同一个内存。您没有在任何地方定义键
函数。这可能就是它未定义的原因。。。这是你说的唯一真正的问题。不清楚您在这里要做什么。@很抱歉,我省略了key()
函数,因为我认为它与此无关。但是它在我的代码中。您的multiKey()
签名中的wait
和doors
数组中的wait
是不同的值。您唯一声明的问题是key
是未定义的,您认为其中包含的如何定义key
是不相关的吗?你的代码是什么?它到底出了什么问题?@AlexWayne:我想他是说等待
和点
在键
函数中是未定义的。似乎有一种假设,所有wait
标识符将自动解析到相同的内存。我分别将500
和600
作为点
和wait
作为多键
函数的参数传递。console.log
确实返回500