繁体   English   中英

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

[英]how to debug “function is not defined” error in javascript

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

可能是由于脚本中定义函数的语法错误导致无法执行脚本且未定义函数而引起的,但是我发现通常在输入错误时会发生此错误。
例如:

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]出现在非本机函数中),但不太可能。)

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

功能表达

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

功能说明

function foo() {alert(2);}

使用function expression该函数将不存在,直到该行代码被执行为止。

使用function statement ,函数在编译时就存在。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM