6

我一直在做一个程序,我想知道像这样启动两个函数之间的区别:

$(function () {
   //content
});

function Name () {
    //content
}

另外,为什么我不能说出第一个例子?我尝试将第一个示例更改为第二种类型,并且该功能完全停止工作。我在第一个示例中使用了 jQuery,一切都很好,但是在另一个示例中,该函数停止工作。

那么有什么区别呢?

4

4 回答 4

15

$(function () {});这是快捷方式$(document).ready(function(){});

而这:

function Name () {
    //content
}

是标准的javascript函数。

于 2013-05-18T19:21:20.333 回答
4

第一个是用于 jQueryready事件的函数表达式,而第二个是函数。

using$(function(){...});$(document).ready(function(){...});.

ready事件在文档完成加载时发生,因此事件处理程序将自动运行。除非您调用常规函数,否则它根本不会运行。

您可以自然地使用常规函数而不是事件处理程序的函数表达式:

function readyHandler() {
  ...
}

$(readyHandler); // or $(document).ready(readyHandler);

可以命名函数表达式,例如:

var x = function y() { ... };

但是,函数表达式的名称(y在示例中)不是全局的,它只能在函数本身内部使用。此外,不同浏览器的具体实现方式不同,因此您应该避免使用它。

于 2013-05-18T19:26:24.073 回答
1

第一个是所谓的匿名函数。它在文档就绪事件上执行

$(document).ready(...);

并且是 jQuery 约定。由于您不能直接调用它,因此它没有/不需要名称。

第二个版本是一个标准函数,您可以随时按名称调用。

如果您将第一个符号更改为第二个符号,它将不再在文档就绪时自动运行。安全的方法是将“worklaod”移动到具有第二个符号的函数中,并使用第一个符号创建一个调用该函数的行。这样你就拥有了两全其美:一个单独的可调用函数和简单的自动执行。

于 2013-05-18T19:25:57.167 回答
1

第一个:

 $(function () {
 //content
 });

正在向jQuery对象$传递一个匿名函数,相当于$(document).ready(function(){});

第二个只是一个名为Name.

于 2013-05-18T19:26:53.173 回答