Cla*_*nga 15 javascript jquery
我注意到有时候一个javascript错误会打破其他无关的javascript功能,有时它不会.我无法在其中看到一个模式,这使得调试变得困难(特别是当你接受一个旧项目而你没有时间来修复所有错误时).
例如这段代码:
$(".div-one").slick({ // settings for slick plugin });
Run Code Online (Sandbox Code Playgroud)
打破了这段代码:
$('.product-options').click(function() {
$('.message').slideToggle('show');
});
Run Code Online (Sandbox Code Playgroud)
当.div-one页面上没有元素时.它重新调整了元素未定义的错误.所以我把它包装在if语句中检查.div-one的长度,现在代码工作正常.
但显然有很多情况下javascripts错误不会破坏任何东西.
那么什么时候js错误会导致问题?这两段代码在同一个文件中.也许它只影响同一个文件?
谢谢!
T.J*_*der 14
JavaScript与其他语言没有区别,在这方面有例外.
如果你有:
doThis();
doThat();
doSomethingElse();
Run Code Online (Sandbox Code Playgroud)
...并doThat抛出一个异常,它之后的代码(doSomethingElse在这种情况下)永远不会运行(在所有语言中都有异常,包括JavaScript).
所以如果你有:
$(".div-one").slick({ /* settings for slick plugin */ });
$('.product-options').click(function() {
$('.message').slideToggle('show');
});
Run Code Online (Sandbox Code Playgroud)
...以及slick抛出异常的调用,它下面的单击处理程序永远不会被连接,因为该代码不会运行.
相反,如果slick 不抛出异常,但稍后当您使用任何光滑的功能并且它失败时,这将不会影响单击处理程序,因为该失败并不会阻止单击处理程序被连接起来.
与其他具有例外的语言一样,您可以控制异常的影响; 在JavaScript(以及其他几个)的情况下,您可以使用try/catch(和可选finally)块来执行此操作,例如:
try {
$(".div-one").slick({ /* settings for slick plugin */ });
} catch (e) {
// Some appropriate handling of the exception
}
try {
$('.product-options').click(function() {
$('.message').slideToggle('show');
});
} catch (e) {
// Some appropriate handling of the exception
}
Run Code Online (Sandbox Code Playgroud)
在那里,异常调用slick不会阻止单击处理程序被连接.