2013-04-24 49 views
-1

Javascript是否已知会使对象指针一下子突然变得没有任何警告?对象指针突然变得不明确

我将三个对象指针数组传递给一个函数,并且在调用另一个函数(其中之一作为参数提供)后,另一个函数在调用之后变得未定义。

我试图将其中一个传递给另一个函数,并在每一步检查它是否发生了任何事情,但没有任何反应,直到控制从该函数返回(返回另一个对象引用数组内置该功能)。

我也尝试克隆它,并在调用后从克隆中复制回来,结果仍然是未定义的。最奇怪的是,我试图再次构建它,在调用所提及的其他函数之后,向其构建的函数插入一个调用。还是一样。

发生这种情况的功能如下。请注意调用绘图之前和之后的相同警报。第一个工作,另一个不工作。

function play(skaters,nations,distances) 
{ 
    var pairs = []; 
    for(i=0;i<distances.length;i++) 
    { 
    alert(distances[i].value + ' ' + distances[i].unit + ':'); 
    pairs = drawing(skaters,i); 
    try{ 
    alert(distances[i].value + ' ' + distances[i].unit + ':'); 
    } catch(err) {alert(err.message)} 
    for(j=0;j<pairs.length;j++) 
    displayPair(pairs[j],distances[i],skaters,nations); 
// displayDistance(distances[i],skaters,nations); 
    } 
// displayFinal(nations); 
} 
+0

你可以发布一些你的代码吗? – GrandMasterFlush 2013-04-24 09:22:00

+3

是的,我认为js不喜欢你。没有代码,你不会在这里得到太多的爱 – x4rf41 2013-04-24 09:22:16

+0

不,这不是正常的行为。您需要发布代码示例,因为问题很可能出现在您的代码中或您正在使用的库中。 (请确保示例在发布之前实际显示了该行为。) – JJJ 2013-04-24 09:31:44

回答

1

无论i也不j声明与var关键字,意思ij成为全球范围内的变量,而不是局部变量(假设你没有其他地方宣布他们,我们在这里并没有看到它,但似乎不太可能)。如果drawing修改了i,它可能会导致您看到的问题。

没有看到代码的其余部分(特别是drawing函数及其调用的任何函数),所以不可能说,但使用关键字var来声明变量将是朝着正确方向迈出的良好开端。

+0

是的!这似乎是问题所在。我确实记得在我编程的前几个循环中加入声明,但后来忘记了,因为他们似乎仍然在工作。在那之前。 我很喜欢Javascript,你可能会猜到。谢谢您的帮助。很高兴未被卡住,并准备好继续前进。 – 2013-04-25 18:32:27

+0

没问题,很高兴帮助。 :) – 2013-04-25 18:37:39