我在Max / MSP的编程环境中使用Javascript。如果您有兴趣,可以在Max中basic overview实施http://jsfiddle.net/estevancarlos/WHc5j/。那里没什么特别不寻常的。只是一些自定义功能/方法。
所以我在这里并不完全确定我的术语。我有这个:var velData = MultiDimensionalArray(8, 16)
全局声明,在下面的函数中引用。
它是全局变量吗?由于它调用函数MultiDimensionalArray
,是否会使velData
成为函数表达式?无论哪种方式,我都无法从我的函数外部访问变量:
function list(y) {
if (inlet == 1) {
y = arrayfromargs(messagename,arguments);
for (var i = 0; i < y.length; i++ ) {
velData[row][i] = y;
}
}
}
post(velData[0][0]);
post();
post()
相当于console.log,post(velData[0][0])
在函数内部但不在其外部时有效。我认为,因为velData
是全局声明的,我应该能够在函数外部访问它,但我不能。
以下是Jsfiddle上的代码 - {{3}}
建议?
答案 0 :(得分:3)
&#34;所以我在这里并不完全确定我的术语。我有这个:
var velData = MultiDimensionalArray(8, 16)
全局声明,在下面的函数中引用。它是一个全局变量吗?&#34;
如果velData
变量不在其他函数中,则它仅在全局声明。
&#34;由于它正在调用函数
MultiDimensionalArray
,是否会使velData
成为函数表达式?&#34;
不,函数表达式与函数的调用无关。它与创建函数的方式有关,除了与您的问题无关的一两个问题之外,它对调用没有任何影响。
&#34;无论哪种方式,我都无法在我的函数中从循环外部访问变量:&#34;
然后变量要么不是全局变量,要么在循环运行后的某个时间创建/初始化变量。
&#34;
post()
相当于console.log
和post(velData[0][0])
在函数内部但不在其外部时起作用。&#34;
然后,似乎在velData
初始化之后的某个时间调用它所使用的函数导致它工作,而如果你没有在函数内部调用它,那么它就会被调用。在velData
初始化之前立即调用。
&#34;我认为,由于
velData
是全局声明的,我应该能够在函数外部访问它,但我不能。建议&#34;
如果它确实是全球性的,那么它听起来像是一个时间问题。您需要跟踪velData
获取其值的位置和时间,并确保在此之前没有其他代码尝试使用velData
。