Javascript 如何避免未捕获的引用错误
我有一个常见的功能,许多页面如下Javascript 如何避免未捕获的引用错误,javascript,Javascript,我有一个常见的功能,许多页面如下 function (){ resetForm(); $ajax call { // some code // } } 现在,如果我没有在相应的js中编写resetForm()fn,那么它会给出它应该给出的未捕获引用错误,并且后面的代码不会执行 我在其中编写的js文件<;strong>resetForm fn()运行良好,但其他文件则不然 我现在的解决方案是在其他页面中编写一个空白的resetForm函数。还有别的办法吗? 感谢您的帮助您可以使用t
function (){
resetForm();
$ajax call
{
// some code //
}
}
现在,如果我没有在相应的js中编写resetForm()fn,那么它会给出它应该给出的未捕获引用错误,并且后面的代码不会执行
我在其中编写的js文件<;strong>resetForm fn()运行良好,但其他文件则不然
我现在的解决方案是在其他页面中编写一个空白的resetForm函数。还有别的办法吗?
感谢您的帮助您可以使用
typeof
if (typeof resetForm === 'function') {
resetForm()
}
// carry on.
这将检查是否有名为
resetForm
的函数可用,如果有,则执行该函数。您可以使用typeof
if (typeof resetForm === 'function') {
resetForm()
}
// carry on.
这将检查是否有名为
resetForm
的函数可用,如果有,则执行该函数。以下是几个明显的选项:
- 像您那样编写一个空白函数
typeof resetForm==='function'&&resetForm()代码>
- 通过更好地模块化代码,确保只加载与当前页面相关的代码
- 像您那样编写一个空白函数
typeof resetForm==='function'&&resetForm()代码>
- 通过更好地模块化代码,确保只加载与当前页面相关的代码
- 这里有几个明显的选择:
resetForm
:
if (resetForm) {
resetForm();
}
只需检查是否定义了
resetForm
:
if (resetForm) {
resetForm();
}
您可以检查它是否存在(全局),然后通过以下方式调用它:
window.resetForm && resetForm();
您可以检查它是否存在(全局),然后通过以下方式调用它:
window.resetForm && resetForm();
我知道它不是jQuery标签问题,但是考虑使用jQuery的OnRead处理程序,它在加载所有JavaScript时执行。< /P>
//main.js
$(function(){
resetForm();
});
//functions.js
function resetForm() { .. }
<> P>将调用<代码> ReStase< /代码>正确事件,如果<代码> ReStase<代码>在单独的JS中,并在<代码> Mead之后加载。j/< >代码>我知道它不是jQuery标签问题,但是考虑使用jQuery的OnRead处理程序,它在加载所有JavaScript时执行。
//main.js
$(function(){
resetForm();
});
//functions.js
function resetForm() { .. }
如果
resetForm
在单独的js中,并在加载main.js
之后加载,它将正确调用resetForm
事件。我不完全确定您在这里试图实现什么。您想调用resetForm()。在使用该函数之前,您需要引用包含该函数的文件。是否需要在该点上实际执行该函数?我不完全确定您在这里要实现什么。您想调用resetForm()。在使用该函数之前,您需要引用包含该函数的文件。您需要在该点实际执行该函数吗?因为这不仅检查resetForm
是否存在,而且还检查它是否是函数。@Cerbrus我认为,额外的安全性是似是而非的,因为,尽管是一些函数,它可能是错误的,因为它可能被定义为字符串文字…@fast:a“string literal”?@fast-typeof new string()=“object”
和typeof“a string”=“string”
。。。你是什么意思?@RobH我的意思是,这个函数的显式测试实际上并没有增加安全性:如果你不能保证没有,例如'var resetForm=“my reset form text”;'您也不能保证函数resetForm()实际上是正确的。。。凌乱的设计不要把它看成字面上/形式上的:-),因为这不仅检查resetForm
是否存在,还检查它是否是一个函数。@Cerbrus我认为,额外的安全性是似是而非的,因为尽管它是一个函数,但它也可能是一个错误的函数,因为它可能被定义为字符串文字…@fast:a“字符串文字”?@fast-typeof new String()。。。你是什么意思?@RobH我的意思是,这个函数的显式测试实际上并没有增加安全性:如果你不能保证没有,例如'var resetForm=“my reset form text”;'您也不能保证函数resetForm()实际上是正确的。。。凌乱的设计不要随便/正式地看待这个问题:-)
//main.js
$(function(){
resetForm();
});
//functions.js
function resetForm() { .. }