-1

Javascript は、何の警告もなく突然オブジェクト ポインタを未定義にすることが知られていますか?

オブジェクト ポインターの 3 つの配列を関数に渡していますが、そのうちの 1 つがパラメーターとして提供される別の関数を呼び出した後、呼び出し後に別の 1 つが未定義になります。

私はそれを他の関数にも渡し、各ステップで何かが起こったかどうかを確認しようとしましたが、その関数から制御が返されるまで何も起こりません(その関数に組み込まれているオブジェクト参照の別の配列が返されます) )。

私もそれをクローンしようとしましたが、呼び出し後にクローンからコピーし直しましたが、結果は未定義です。何よりも奇妙なことに、言及された他の関数への呼び出しの後にビルドされる関数への呼び出しを挿入して、もう一度ビルドしようとしました。まだ同じ。

これが発生する関数は以下のとおりです。drawing の呼び出しの前後に同じアラートが表示されることに注意してください。最初のものは機能しますが、他のものは機能しません。

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もキーワードでj宣言されておらず、ローカル変数ではなくグローバル スコープの変数になることを意味します (他の場所でそれらを宣言しておらず、ここでは表示されていないと仮定しますが、それはありそうにありません)。を変更すると、表示されている問題が発生する可能性があります。varijdrawingi

コードの残りの部分 (具体的には、drawing関数とそれが呼び出すもの) を見ないと何とも言えませんが、varキーワードを使用して変数を宣言することは、正しい方向への良いスタートになるでしょう。

于 2013-04-25T06:32:24.190 に答える