0

我是 javascript 的新手。我正在使用 firebug 调试我的程序,但出现“未定义函数”错误。我在网上搜索,有人说这是因为函数中的语法错误。但是那个函数很大,我现在不能使用firebug(因为它只会给我“未定义”的错误),有什么好的调试方法吗?有什么工具可以使用吗?谢谢!

4

2 回答 2

1

可能是由定义函数的脚本中的语法错误导致脚本未执行且未定义函数引起的,但我发现通常当您有错字时会发生该错误。
例如:

function doSomething() {
}
dosomething();

在那里,我忘了大写s. 由于 JavaScript 区分大小写,因此无法找到该函数。


你可以做的调试是找到你实际调用的函数,然后将它与定义的函数列表进行比较。如果我们只处理全局函数,那么您可以将其粘贴到 JavaScript 控制台(必要时删除换行符)以查看您定义的所有全局函数:

for(var key in window) {
    if(Object.prototype.hasOwnProperty.call(window, key)) {
        if(typeof window[key] === 'function' &&
           window[key].toString() !== '[object Function]' &&
           window[key].toString().indexOf('[native code]') === -1) {
            console.log(key);
        }
    }
}

(这在某些情况下没有列出一些(例如[native code]出现在非本地函数中),但它们不太可能。)

于 2012-09-27T06:16:09.270 回答
0

您可以发布函数声明。可能是您正在使用function expression

函数表达式

var f = function({alert(1);});

函数语句

function foo() {alert(2);}

在执行function expression该代码行之前,该函数不存在。

使用 afunction statement函数在编译时存在。

当然,它也可能是一个范围问题,但我们无法看到没有代码。

于 2012-09-27T06:17:34.123 回答