0

当我更深入地研究 JavaScript 和 jQuery 时,我发布了这个。以下代码

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

$(alert('hi'));

按顺序提醒“hi”和“instance”!我确信对 js 对此的看法有所了解,因为我认为这将是“实例”和“嗨” - 任何人都可以解释一下吗?谢谢

4

3 回答 3

2

$(function() { ... })是一个别名$(document).ready(function() { ... })

你的第二个有点荒谬,并评估如下:

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

于 2013-04-29T12:42:10.483 回答
0

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

这里的代码执行顺序类似于

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

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

于 2013-04-29T12:41:30.083 回答
0

当你这样做

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

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

当你这样做

$(alert('hi'));

alert('hi')立即调用,并将返回值传递给 jQuery。机会是“立即”发生在“加载 DOM 树时”之前。

我测试过的所有地方,都alert返回undefined。据我所知,传递undefined给 jQuery 没有明显的效果。

于 2013-04-29T12:47:25.243 回答