当前位置:  开发笔记 > 编程语言 > 正文

为什么我的JavaScript函数有时"未定义"?

如何解决《为什么我的JavaScript函数有时"未定义"?》经验,为你挑选了2个好方法。

我调用我的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:这种情况下的脚本驻留在一个外部文件中,该文件使用页面头部中的普通

接下来的工作很好......很奇怪吧?


我只是遇到了与IE9和Chrome 14相同的问题.后方的痛苦是....

2> David McLaug..:

如果您只是在页面上包含脚本,则不可能发生这种情况.

当JavaScript代码开始执行时,"copyArray"函数应始终可用,无论它是在它之前还是之后声明 - 除非您使用依赖库动态加载JavaScript文件.如果是这种情况,时间存在各种各样的问题.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有