我调用我的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:这种情况下的脚本驻留在一个外部文件中,该文件使用页面头部中的普通
接下来的工作很好......很奇怪吧?
如果您只是在页面上包含脚本,则不可能发生这种情况.
当JavaScript代码开始执行时,"copyArray"函数应始终可用,无论它是在它之前还是之后声明 - 除非您使用依赖库动态加载JavaScript文件.如果是这种情况,时间存在各种各样的问题.