我打电话给我的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