函数调用中的jQuery差异$(function(){})

时间:2013-04-29 12:39:03

标签: jquery

我正在发布这篇文章,因为我更深入地研究了JavaScript和jQuery。以下代码

$(function () { 
    alert('instance');
});

$(alert('hi'));

按顺序警告“hi”和“instance”!我确信对js的思考方式有一个了解,因为我认为它会是“实例”和“嗨” - 任何人都可以解释这个吗?感谢

3 个答案:

答案 0 :(得分:2)

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

的别名

你的第二种是荒谬的,并评估这样的事情:

警告'hi',然后创建一个返回值的jquery对象(我相信undefined

答案 1 :(得分:0)

$(function(){})$(document).ready(function(){})的快捷方式,这意味着$(function(){})内的代码执行将被延迟,直到文档完全加载为止。

此处的代码执行顺序类似于

    执行
  1. $(function(){})会导致注册文档就绪回调
  2. $(alert('hi'));被执行,这里alert('hi')被执行导致弹出窗口,它会向jQuery返回一个未定义的值,忽略它。
  3. 触发文档就绪事件,导致执行已注册的回调,即使用instance
  4. 发出警报

    代码之间的区别在于,第一种情况是您没有立即执行该函数,您将该函数作为参数传递给jQuery(因为在函数定义之后没有())。 在第二种情况下,您调用alert('hi'),这将导致立即调用alert,然后将返回的值alert传递给jQuery

答案 2 :(得分:0)

当你这样做时

$(function () { 
    alert('instance');
});

,创建一个将警告“实例”的函数,然后将该函数传递给jQuery($)。 JQuery记住该函数,并在加载DOM树时调用该函数。这是$(document).ready(function(){...})的别名。

当你这样做时

$(alert('hi'));
立即调用

alert('hi'),返回值将传递给jQuery。在“加载DOM树时”之前“立即”出现机会。

我测试过的每个地方,alert都会返回undefined。据我所知,将undefined传递给jQuery没有任何可观察到的影响。