2013-04-24 60 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