当我更深入地研究 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 没有明显的效果。