【发布时间】:2012-10-05 01:51:22
【问题描述】:
匿名函数开头的$有什么区别?
这个例子:
(function() {
...
})();
对比这个:
$(function() {
...
})();
【问题讨论】:
标签: javascript jquery function
匿名函数开头的$有什么区别?
这个例子:
(function() {
...
})();
对比这个:
$(function() {
...
})();
【问题讨论】:
标签: javascript jquery function
(function() {})();
上面一行是创建一个匿名函数,然后立即执行它
$(function() {})();
假设您已经加载了 jQuery,上面的行会导致错误。这部分 $(function(){}) 将一个匿名函数传递给运行的 jQuery。 jQuery 会返回一个 Document 对象给你。因为您有结束括号 (),所以 Javascript 将尝试将 Document 对象作为函数执行。因为 Document 对象不是函数,所以会引发 TypeError 异常。
【讨论】:
像所有其他答案一样
$(function(){
...
});
真的只是
jQuery(function(){
});
并且第二个将工作相同,这与您的示例中的其他类型的函数之间的区别在于,第一个必须从某个地方调用,其中作为 jQuery 版本 - 如果 jQuery 以 HTML 加载它文档准备好后会自动运行。
【讨论】:
您的第一个示例是一个自执行函数,它在定义后立即开始执行,而第二个示例在文档准备好被操作时由 jQuery 执行。
为了更好地理解第一个模式为什么有用,您可以参考this SO answer。
您还可以在.ready() function 的文档中阅读有关将函数传递给 jQuery 的更多信息。
【讨论】: