如何调试javascript中的“函数未定义”错误

时间:2012-09-27 06:13:26

标签: javascript

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

2 个答案:

答案 0 :(得分: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]出现在非原生函数中)未能列出一些,但它们不太可能。)

答案 1 :(得分:0)

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

功能表达

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

功能声明

function foo() {alert(2);}

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

编译时存在function statement函数。

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