我调用我的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是在那里定义的,所以这不能是关于脚本文件加载的顺序。
我已经得到这种情况下更难以解决,其中调用函数位于另一个文件,应该被调用函数后加载。但这是我可以呈现的最简单的情况,并且似乎是同样的问题。
它不会在100%的时间发生,所以我怀疑某种负载定时相关的问题。但我不知道什么。
@Hojou:这是问题的一部分。我现在得到这个错误的函数本身是我的addLoadEvent,它基本上是公共库函数的标准版本。
@James:我明白,并且在函数中没有语法错误。在这种情况下,也会报告语法错误。在这种情况下,我只得到’未定义’的错误。
@David:这种情况下的脚本驻留在使用正常的< script src =“file.js”>< / script>方法在页面的头部分。
@Douglas:有趣的想法,但如果是这样,我们怎么可能有信心调用用户定义的函数?在任何情况下,我试过这个,它没有工作。
@sk:这种技术已经跨浏览器测试,基本上从Prototype库复制。