2010-08-14 83 views
0

我有一個從1-10返回一個隨機數的函數。當我在我的其他函數中使用它時,它會工作一次,但是然後它開始出現錯誤,它不是函數。 這不是確切的代碼,只是一個類似的示例代碼。它產生一個錯誤,說「對象[對象DOMWindow]的TypeError:屬性'跑'不是一個函數」爲什麼這樣做?爲什麼它使我的功能,並使其不再是一個功能?

非常感謝

var buffer = []; 

function ran() { 
    return Math.round(Math.random()*10); 
}; 

function test(){ 
    var size = 6; 
    for (i=0; i<=size;i++) { 
     var num = ran(); 
     if (num === 2 || num === 3){ 
     buffer.push(num); 
     }; 
    }; 
}; 

回答

4

你的代碼是好的,但是從錯誤,它看起來就像你分配一些值稱爲ran別的地方在你的代碼中隱含的全局變量。

var buffer = []; 

function ran() { 
    return Math.round(Math.random()*10); 
}; 

function test() { 
    var size = 6; 
    for (i=0; i<=size;i++) { 
     var num = ran(); 
     if (num === 2 || num === 3){ 
     buffer.push(num); 
     }; 
    }; 
}; 

// ... somewhere else: 

function someOtherFunction() { 
    ran = 5; // This will break your run() function when 
      // someOtherFunction() is called. 
} 

如果是這種情況,請確保您的變量的範圍限制在它們使用var關鍵字聲明函數:

// ... somewhere else: 

function someOtherFunction() { 
    var ran = 5; // This will limit the scope of ran and will 
       // not conflict with the run() function. 
} 
+0

非常感謝。這是我有另一個輸出true或false的函數,它有一個名爲ran的局部變量。 – Isaiah 2010-08-14 03:59:41

相關問題