-1

我在 Max/MSP 的编程环境中使用 Javascript。如果您有兴趣,这里是它在 Max 中实现的基本概述。那里没有什么特别不寻常的地方。仅提供一些自定义功能/方法。

所以我不完全确定我在这里的术语。我有这个: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 上的代码- http://jsfiddle.net/estevancarlos/WHc5j/

建议?

4

1 回答 1

3

“所以我不完全确定我在这里的术语。我有这个:var velData = MultiDimensionalArray(8, 16)全局声明,在下面的函数中引用。它是一个全局变量吗?”

velData变量仅在不在某个其他函数内时才全局声明。


“既然是调用函数,MultiDimensionalArray那会velData是函数表达式吗?

不,函数表达式与函数的调用无关。它与创建函数的方式有关,除了与您的问题无关的一两个狭窄问题外,这不会对其调用产生影响。


“无论哪种方式,我都无法从函数中的循环外部访问变量:

然后该变量要么不是全局的,要么在循环运行后的某个时间被创建/初始化。


"post()等效于console.log并且post(velData[0][0])在函数内部但不在函数外部时起作用。

然后看起来它被放置在其中的函数导致它工作在velData初始化之后的某个时间被调用,而如果你没有它在函数中,它会立即被调用并且在velData初始化之前。


“我认为既然velData是全局声明的,我应该可以在函数之外访问它,但我不能。建议?”

如果它确实是全球性的,那么听起来确实像是一个时间问题。您需要追踪何时何地velData获取其值,并确保在此velData之前没有其他代码尝试使用。

于 2014-05-19T02:56:38.697 回答