我正在发布这篇文章,因为我更深入地研究了JavaScript和jQuery。以下代码
$(function () {
alert('instance');
});
$(alert('hi'));
按顺序警告“hi”和“instance”!我确信对js的思考方式有一个了解,因为我认为它会是“实例”和“嗨” - 任何人都可以解释这个吗?感谢
答案 0 :(得分:2)
$(function() { ... })
是$(document).ready(function() { ... })
你的第二种是荒谬的,并评估这样的事情:
警告'hi',然后创建一个返回值的jquery对象(我相信undefined
)
答案 1 :(得分:0)
$(function(){})
是$(document).ready(function(){})的快捷方式,这意味着$(function(){})
内的代码执行将被延迟,直到文档完全加载为止。
此处的代码执行顺序类似于
$(function(){})
会导致注册文档就绪回调$(alert('hi'));
被执行,这里alert('hi')
被执行导致弹出窗口,它会向jQuery返回一个未定义的值,忽略它。instance
代码之间的区别在于,第一种情况是您没有立即执行该函数,您将该函数作为参数传递给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没有任何可观察到的影响。