var Stars = new Array(1,2,3,4,5,6,7,8,9,10);
var StarsX = new Array(451,455,460,470,490,100,160,220,280,300);
var StarsY = new Array(451,455,460,470,490,480,390,330,200,120);
var Starsm = Stars
var StarsmX = StarsX
var StarsmY = StarsY
//just shows the output of the variables in a text field
function contpost(){Tfield.innerHTML=Stars + "<br/>" + StarsX + "<br/>" + StarsY + "<br/>" + Starsm + "<br/>" + StarsmX + "<br/>" + StarsmY;}
//cycles through the "for" loop and posts the variables
function newpost(){
for (var i=0;i<Stars.length;i++){
StarsmX[i] = StarsX[i] + 10;
StarsmY[i] = StarsY[i] + 10;
}
contpost()
}
var Tfield= (This is the text field)
var canv_one= (This is a canvas in my document)
canv_one.addEventListener('click', newpost);
如果我运行这个代码(Firefox 9),if/then循环将“mX”变量和“X”变量都加10。Javascript变量声明问题
我现在知道大约是怎么做的。这只是因为我很早就设定了他们。当我在声明中替换它时,它正常工作:
var Starsm = new Array()
var StarsmX = new Array()
var StarsmY = new Array()
我不明白的是为什么javascript会这样做。对我来说,如果你把它们设定为平等一次,在全球宣言期间,它们不会在以后重新相同(并且在后面做这件事,我从来没有将StarsX设置为StarsmX。)
I' m非常确定这意味着我不了解Javascript的某种基本功能,这让我很担心。
任何人都可以帮忙吗?
只是一个预留:创建阵列的优选语法为当'[]'而不是'新的Array()'(短,容易阅读,并且避免了该问题,其中主叫'新阵列(5)'创建一个数组与五个元素,而不是一个元素的值为5)。所以'var Stars = [1,2,3,4,5,6,7,8,9,10];'和'var Starsm = [];' – nnnnnn 2011-12-29 03:31:11
OK。我会稍后回去改变它。我基本上从我可以谷歌学习JavaScript。 ...最佳实践并不总是很清楚。 – Brightstar 2011-12-29 03:32:51
很酷。你可能想看看MDN:https://developer.mozilla.org/en/JavaScript/Guide。此外,Google提示:如果您想了解某些JavaScript关键字或功能,请在您的Google搜索字词的末尾添加“mdn”或“mdc”,例如“array mdn” - 这样可能会带来MDN关于该关键字/功能的页面放在搜索结果的顶部 - 通常您甚至不需要单词“javascript”。 – nnnnnn 2011-12-29 03:42:54