我一直在使用javascript进行编程(得到jquery的支持),我遇到了一些奇怪的变量行为,我认为这些行为确实出乎意料(或者我可能不知道)。
基本上,我想做的是让一个变量(zodziai)(数组)在代码的一部分中“填充”数组,然后通过单击按钮(逐个)删除这些数组。 / p>
此外,我仍然希望在游戏结束时保存这些数组,即使第一个变量是空的,因为按钮clicks.Easy,我想,所以我创建了另一个数组变量(zodziai2)和等同于游戏开始时(当第一个充满阵列时,准备将它们一个一个地移除。
在游戏结束时检查zodziai2(第二个变量)的值之前,一切似乎都很好。即使在从zodziai(第一个变量)中删除元素的整个过程中都没有触及它,但在游戏结束时它也会变得空洞。
代码:我在document.ready中声明了两个变量= [];
$("#begin").click(function() {
//#begin is a button which starts the game
$("#enterwords").html("It's showtime!");
zodziai2 = zodziai; //zodziai is full of stuff, making zodziai2 the same
alert(window.zodziai2); //checking, zodziai2 seems to be equal to zodziai
taskai = 0;
maxtaskai = zodziai.length;
...
if (zodziai.length > 0) {
... stuff, just DOM.
...
}
});
还有下一个按钮,它负责从zodziai数组中删除一个项目。不知怎的,它也从zodziai2中删除了。
$("#next").click(function() {
enword = $("#angliskas_zodis").val();
ltword = $("#lietuviskas_zodis").val();
//enword = enword.split("");
//atitinkamas = atitinkamas.split("");
if (enword == atitinkamas) {
...
zodziai.remove(random_skaicius); // removing one item from zodziai (no worries, it's a self written function, working as a bee
...
...
});
稍后,我定义了第三个按钮,重启,其中zodziai2现在为空,zodziai也是如此。如果代码只是与zodziai“玩”,zodziai2怎么能为空呢?我错过了什么?
$("#restart").click(function() {
zodziai = zodziai2; //should be full of stuff, but is certainly not :(
random_skaicius = 0;
ilgis = 0;
zodis = "";
atitinkamas = "";
tempzodislt = "";
taskai = 0;
maxtaskai = 0;
klaidingi = [];
$("#angliskas_zodis").val("");
$("#lietuviskas_zodis").val("");
surasymas(window.zodziai2);
alertify.alert("Drop us a line if you think this function would be useful :)");
});
答案 0 :(得分:1)
只是一个指针。我看到你写一个声明zodziai2 = zodziai。这意味着两个变量都指向数组的相同内存位置。如果你从zodziai中删除一个元素,它也将从zodziai2中删除。这有帮助吗?