在javascript函数的开始或结束时阻止默认事件操作的优点和缺点

Áxe*_*ena 11 javascript event-handling javascript-events

在以下javascript代码示例中:

var myButton = $('#myButton');
myButton.click(function (event) {
    /* stuff... */
    event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

什么是默认优势和优势 - 在功能的开头或结尾阻止操作? - 假设无条件想要最终阻止它的情况.是否有任何技术理由选择单向?

在互联网上冲浪我发现只有一个参考 -dead博客,对不起Google Cache链接,并且在开头阻止默认操作的点将避免在js功能崩溃的情况下发生的操作.

注意:我在我的例子中使用jQuery只是为了熟悉,问题不是关于jQuery,经典事件处理模式的答案将是相同的.

jhu*_*mel 11

出于你说的原因,我把防范代码放在了开头.如果函数中较早的js中存在错误,则已经阻止了默认操作.这可能是生产中所需的行为,但也可以帮助调试开发代码,请考虑:

$('a').on('click', function(e) {
  console.log('some debugging information here');
  // Other stuff
  e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

如果发生错误,页面可以刷新或跟随锚点的href,然后才能读取调试信息.将操作切换到顶部将确保您可以在控制台中读取输出.

编辑 As Axel在评论中指出,另一个优点是你立刻认为代码正在替换默认操作而不是补充它.

  • 这是一个好点,另一方面我认为可能在开始时阻止事件可能会增加函数的表达性,因为一个简单的视觉告诉你你不想要默认动作,你会做一些花哨的东西,另一种方式你必须走到最后才知道事件处理的重要事实...... (2认同)