此处提供所有源代码:只需查看页面源代码即可。一半的代码在该页面上,另一半在'deputyDepot.js'文件中,该文件在源中链接,也应该是可见的。
只是一些事情:这显然仍在进行中。我在编码时非常杂乱无章,而且我倾向于跳了一下,做了一点这个以及一点点。所以它有点乱。还有背景。我们只是假装不存在,好吗?
所以现在,关于这个问题!似乎我无法在任何函数中访问数组。
目前,我测试的方式是修改我的主要功能(称为weTalkNow(输入))。它位于deputyDepot.js。我将其设置为返回我正在测试的任何值,以查看它们的设置。这些值会在我的聊天框中打印出来。所以我像console.log()一样使用它。目前它设置为返回用户输入的长度,但这完全不相关。
_inputArray通过获取用户输入(字符串)并将其拆分为空格来填充。它在页面顶部声明。这一切都很好,花花公子。
出现问题的地方是手动填充数组。
var x = [ [1,2], [3,4] ];
/* Main Function */
function weTalkNow(){
return x[0][0];
}
据我所知,该代码应该输出1.但事实并非如此。将代码修改为此代码时,它可以正常工作:
/* Main Function */
function weTalkNow(){
var x = [ [1,2], [3,4] ];
return x[0][0];
}
然而,这不是很有帮助。我需要一个全局数组,而不是本地数组。
如果我决定宣布
,那么事情真的很奇怪var x = [ [1,2], [3,4] ];
在我的主页面上(带有HTML和东西的那个),然后执行此操作
/* Main Function */
function weTalkNow(){
return x[0][0];
}
在如果我能以任何方式澄清任何要点,请告诉我。我尽力提供所有信息。随机的小贴士也很受欢迎,但我主要关注的是这一点。
同样,我也很清楚:无论出于何种原因,如果我手动填充它们,我就不能使用ARRAYS(我认为这与问题有某种关系)。 _inputArray正在做它的工作,所以数组工作正常。它是唯一一个这样做的全局数组。但它不是手动填充,而是通过拆分功能填充。我似乎无法创建一个可由函数访问的全局数组。
编辑:
好的,我发现了问题!我写的所有代码都很好,就像它应该的那样。问题是,在我的.js文件的最顶层是一个破坏的功能。这第一行阻止了它下面的所有代码运行,因此我的数组从未被初始化。出于这个原因,我无法访问它们。
一旦我检查了Web控制台,我就能解决所有问题。在发布此问题之前,我不知道有一个Web控制台。
答案 0 :(得分:1)
如果你的函数引用了一个在调用函数的行下面声明的数组,那么该数组将不在范围内。
myFunc();
function myFunc () {
console.log(ra[0]); // won't work
};
var ra = ["a"];
这将有效:
var ra = ["a"];
myFunc();
function myFunc () {
console.log(ra[0]); // will work
};
要记住的另一件事是javascript包含也按顺序处理。还有一件事:通常javascript是从上到下处理的,换句话说;函数不能调用或引用文件中较低行定义的变量,但有一个例外。例外是您正在使用的命名函数。
这不起作用。
var funcA = function () {
funcB(); // wont work
};
funcA();
var funcB = function () {
console.log("from funcB");
};
这将有效:
funcC(); // works fine
function funcC () {
funcD(); // works fine
}
function funcD () {
console.log("from funcD");
};
这些微妙的差异可能被认为代表不完美的设计,但它们可以很好地工作。