我打電話給我的JavaScript函數。爲什麼我有時得到錯誤'myFunction is not defined'是定義的?爲什麼我的JavaScript函數有時「未定義」?
例如。我偶爾會即使在這個例子中「copyArray沒有定義」:
function copyArray(pa) {
var la = [];
for (var i=0; i < pa.length; i++)
la.push(pa[i]);
return la;
}
Function.prototype.bind = function(po) {
var __method = this;
var __args = [];
// Sometimes errors -- in practice I inline the function as a workaround.
__args = copyArray(arguments);
return function() {
/* bind logic omitted for brevity */
}
}
正如你所看到的,copyArray定義那裏,所以這不可能是關於哪個腳本文件加載順序。
我一直在這種情況下,更難解決的情況下,調用函數位於另一個文件中,應該應在被調用的函數之後加載。但這是我可以提出的最簡單的情況,而且似乎是同樣的問題。
它不會100%的時間發生,所以我懷疑某種加載時序相關的問題。但我不知道是什麼。
@Hojou:這是問題的一部分。我現在遇到這個錯誤的函數本身就是我的addLoadEvent,它基本上是公共庫函數的標準版本。
@詹姆斯:我明白,並且在函數中沒有語法錯誤。在這種情況下,還會報告語法錯誤。在這種情況下,我只得到'未定義'的錯誤。
@大衛:在這種情況下,腳本在於使用正常< SCRIPT SRC =「file.js」 > < /腳本>在頁的頭部部分中引用的方法的外部文件。
@Douglas:有趣的想法,但如果是這種情況,我們如何有史以來有信心調用用戶定義的函數?無論如何,我嘗試過這種方式,但它不起作用。
@sk:這項技術已經過瀏覽器測試,基本上從Prototype庫複製。
只是出於好奇......在哪裏你遇到這個錯誤進出正在執行腳本的頁面幀/ IFRAME /彈出窗口? – Shog9 2008-09-30 17:11:13
嗯......沒有涉及的iframe或彈出窗口。 – harpo 2008-09-30 18:49:59