问题

以下是构建具有运行JavaScript代码唯一目的的链接的两种方法.在功能、页面负载速度、验证目的等方面更好?

 function myJsFunc() {
    alert("myJsFunc");
} 
 <a href="#" onclick="myJsFunc();">Run JavaScript Code</a> 

要么

 function myJsFunc() {
    alert("myJsFunc");
} 
  <a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a> 

  最佳答案

我使用javascript:void(0).

三个原因.鼓励在开发人员团队中使用#必然会导致使用像这样调用的函数的返回值:

 function doSomething() {
    //Some code
    return false;
}
 

但是他们忘记在onclick中使用return doSomething()并且只使用doSomething().

避免#的第二个原因是,如果调用函数抛出错误,最终return false;将不执行.因此开发人员也必须记得在调用函数中适当处理任何错误.

第三个原因是有些情况下动态分配onclick事件属性.我更喜欢能够调用函数或动态分配它,而不必专门为一种附件方法或另一种方法编码函数.因此,HTML标记中的onclick(或任何东西)如下所示:

 onclick="someFunc.call(this)"
 

要么

 onclick="someFunc.apply(this, arguments)"
 

使用javascript:void(0)避免了所有上述头痛,我没有找到任何下滑的例子.

所以,如果你是一个单独的开发人员,那么你可以明确地做出自己的选择,但是如果你作为一个团队工作,你必须指定任何一个州:

使用href="#",确保onclick总是包含return false;,任何调用的函数都不会抛出错误,如果您动态地将函数附加到onclick属性,确保它以及不抛出错误返回false.

要么

使用href="javascript:void(0)"

第二个问题显然比较容易沟通。

  相同标签的其他问题

javascripthtmlperformanceoptimizationhref