当我更深入地研究 JavaScript 和 jQuery 时,我发布了这个。以下代码
$(function () {
alert('instance');
});
$(alert('hi'));
按顺序提醒“hi”和“instance”!我确信对 js 对此的看法有所了解,因为我认为这将是“实例”和“嗨” - 任何人都可以解释一下吗?谢谢
当我更深入地研究 JavaScript 和 jQuery 时,我发布了这个。以下代码
$(function () {
alert('instance');
});
$(alert('hi'));
按顺序提醒“hi”和“instance”!我确信对 js 对此的看法有所了解,因为我认为这将是“实例”和“嗨” - 任何人都可以解释一下吗?谢谢
$(function() { ... })是一个别名$(document).ready(function() { ... })
你的第二个有点荒谬,并评估如下:
警报'hi',然后创建一个返回值的jquery对象(我相信undefined)
$(function(){})是$(document).ready(function(){})的快捷方式,这意味着内部代码的执行$(function(){})将延迟到文档完全加载。
这里的代码执行顺序类似于
$(function(){})被执行导致注册一个文档就绪回调$(alert('hi'));被执行,这里alert('hi')被执行导致弹出窗口,它向 jQuery 返回一个未定义的值,它将忽略它。instance代码之间的区别在于,在第一种情况下,您不是立即执行函数,而是将函数作为参数传递给 jQuery(因为()在函数定义之后没有)。在第二种情况下,您正在调用alert('hi')这将导致alert立即调用,然后将返回的值传递alert给 jQuery
当你这样做
$(function () {
alert('instance');
});
,创建一个会提醒“实例”的函数,然后将该函数传递给 jQuery ( $)。JQuery 会记住该函数,并在加载 DOM 树时调用该函数。这是 的别名$(document).ready(function(){...})。
当你这样做
$(alert('hi'));
alert('hi')立即调用,并将返回值传递给 jQuery。机会是“立即”发生在“加载 DOM 树时”之前。
我测试过的所有地方,都alert返回undefined。据我所知,传递undefined给 jQuery 没有明显的效果。