Я вызываю свою функцию JavaScript. Почему иногда я получаю ошибку "myFunction не определен", когда она определена?
Например. Иногда я получаю "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 определен прямо там, поэтому это не может быть порядка, в котором загружаются файлы script.
Я получаю это в ситуациях, которые труднее работать, когда вызывающая функция находится в другом файле, который должен быть загружен после вызываемой функции. Но это был самый простой случай, который я мог представить, и, похоже, та же проблема.
Это не происходит в 100% случаев, поэтому я подозреваю, что проблема связана с нагрузкой. Но я понятия не имею, что.
@Hojou: Эта часть проблемы. Функция, в которой я сейчас получаю эту ошибку, сама по себе является моей addLoadEvent, которая в основном является стандартной версией общей библиотечной функции.
@James: Я так понимаю, и в функции нет синтаксической ошибки. В этом случае также сообщается о синтаксической ошибке. В этом случае я получаю только "неопределенную" ошибку.
@David: script в этом случае находится во внешнем файле, на который ссылаются, используя обычный < script src= "file.js" > </script> метод в разделе главы страницы.
@Douglas: Интересная идея, но если бы это было так, как мы могли бы с уверенностью назвать пользовательскую функцию? В любом случае я пробовал это, и он не работал.
@sk: эта методика была протестирована в браузерах и в основном скопирована из библиотеки Prototype.