在两种功能之间进行选择的建议

Suggestions for choosing between two functions

本文关键字:选择 行选 两种 功能 之间      更新时间:2024-07-04

下面的两段jQuery代码(1)(2),有人能说出哪一个更好吗?为什么?我应该把myfunction放在顶部还是底部?我在许多相关主题的答案中都看到了这两种情况。

(1)

var myfunction = function () {
  // do stuff
};
$(document).ready(myfunction);
$(window).resize(myfunction);

(2)

$(document).ready(myfunction);
$(window).on('resize',myfunction);
function myfunction() {
    // do stuff
}

如果这个问题问得不恰当,请原谅我。

为了不污染全局名称空间,我会将所有jquery任务打包到一个自调用函数中,并在那里完成这些工作:

$(function () {
  
  function myFunction() {
    console.log("doing stuff");
  }
  $(window).on("resize", myFunction);
  myFunction();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

另外,别忘了JavaScript是camelBase首选的,所以myFunction而不是myFunction:)

由于jQuery 1.7,建议使用.on()语句。对于jQuery团队来说,像.click() .resize() .dblclick()这样的所有函数都很难维护。(它们都是碎片化的,现在全在一个功能中)

.on()是最新的版本,所以这也是开发人员要维护的版本。不确定开发人员是否会在进一步的更新中维护其他功能(参见我的示例)。

当然,他们会在未来几年,但不确定会持续多久。

这真的是一个品味问题。我更喜欢像resize这样的快捷方式绑定,而不仅仅是on,因为它可以节省一些按键,并使代码更漂亮。

关于在哪里声明函数,在这种特殊情况下(就执行而言)没有区别,因为有一种叫做提升的东西。

就可读性而言,我建议您阅读这篇文章,这篇文章很好地说明了使用此功能使代码更加清晰。

将函数声明为var意味着作用域。在以下示例中,函数myFunction进入ram,然后在父函数被销毁时被销毁。

myParentFunction = function(){
    var myfunction = function () {
      // do stuff
    };
}

如果它位于Window上,则不需要任何范围。在代码运行之前,函数会在加载时进行解析,它们出现在哪里并不重要。

对于其他…jquery"on"通常在您希望将事件作为参数时使用。否则,直接指定也可以。