我是javascript的新手。我正在使用firebug调试我的程序,我得到了“函数未定义”错误。我在网上搜索,人们说这是因为函数中的语法错误。但是这个函数非常大,我现在不能使用firebug(因为它只给我“未定义”的错误),有什么好方法可以调试它吗?有用的工具吗?谢谢!
答案 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
函数。
当然,它也可能是一个范围问题,但我们看不到没有代码。