所以我发现自己处于尴尬的境地,我在main.js中有一个函数需要一个填充在second.js中的数组......
简单地说,main.js中的函数是可重用的:
function chug()
{
p1.innerHTML = st_a[0];
p2.innerHTML = st_a[1];
...
}
现在,'st_a'应该被解析为:st_ +,在这种情况下变量是'a'。作为second.js文件的想法将有多个数组(st_a,st_b等),并根据需要,相关数组将用于填充段落元素(p1,p2等)
有什么想法吗?
答案 0 :(得分:2)
如果st_ [x]是全局变量,则可以使用window['st_a']
来引用它。所以,你应该可以使用类似的东西:
function chug()
{
var arrid = 'st_'+'a';
p1.innerHTML = window[arrid][0];
p2.innerHTML = window[arrid][1];
//...
}
或使用函数检索数组:
function getArr(id){
return window['st_'+id];
}
或者,您可以在second.js
中使用带有'get'方法的容器对象,例如:
var myArrays = {
st_a: [],
st_b: [],
st_c: [],
get: function(id){
return this['st_'+id];
}
/* etc */
}
现在chug
看起来像是:
function chug()
{
var arr = myArray.get('a');
p1.innerHTML = arr[0];
p2.innerHTML = arr[1];
//...
}
答案 1 :(得分:0)
使用全局变量是邪恶的。因为你可以覆盖另一个已经设置的,javascript不会告诉你你做了一些愚蠢的事。
您有多种选择可以避免使用它们:
使用单个对象包含所有功能。此示例应显示如何执行此操作:
var MYAPP = {} MYAPP.chug = function(){ //你的代码 } //然后,在此之后加载的任何其他文件中,您可以执行以下操作: MYAPP.anotherFunction = function(){} //甚至这个: MYAPP.chug()
这样,您只使用一个变量污染全局范围。
然后,为了解决您的问题,您可以根据您选择的解决方案执行以下操作:
// Let me borrow this code from kooiinc
MYAPP.myArrays = {
st_a: [],
st_b: [],
st_c: [],
get: function(id){
return this['st_'+id];
}
/* etc */
}
MYAPP.chug = function() {
var arr = this.myArrays.get('a') // 'this' refers to the MYAPP object in this case
p1.innerHTML = arr[0]
// ...
}