-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); 
}
4

1 回答 1

2

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

如果没有看到你的代码的其余部分(特别是drawing函数和它调用的任何东西),这是不可能的,但是使用var关键字来声明变量将是一个朝着正确方向的良好开端。

于 2013-04-25T06:32:24.190 回答