2013-04-29 70 views
0

我发布这个,因为我深入研究了JavaScript和jQuery。以下代码

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

$(alert('hi')); 

按顺序发出“hi”和“instance”!我确信对js的想法有一个理解,因为我认为这将是“实例”和“嗨” - 任何人都可以解释这一点吗?谢谢

回答

2

$(function() { ... })第二种情况是$(document).ready(function() { ... })

别名你的第二个是有点无厘头和评估的东西像这样:

警报“嗨”,然后创建返回值(我相信undefined

+0

谢谢,$(something)=== $(document).ready(something)是我需要知道的事实 – 2013-04-29 18:23:08

0

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

这里的代码执行顺序将会像

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

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

+4

我相信他失踪的部分是他对$()的第二次调用正在传递警报的结果。 – 2013-04-29 12:42:32

0

的jQuery对象当你做

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

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

当你

$(alert('hi')); 

alert('hi')立即调用,并且返回值将被传递给jQuery的。在“当DOM树加载完成”之前,“立即”机会就会发生。

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

相关问题