匿名函数开头的$
有什么区别?
此示例:
(function() {
...
})();
与此相对:
$(function() {
...
})();
答案 0 :(得分:4)
(function() {})();
上面一行是创建一个匿名函数,然后立即执行
$(function() {})();
假设您加载了jQuery,上面的行会导致错误。这部分$(function(){})将一个匿名函数传递给运行的jQuery。 jQuery会将一个Document对象返回给您。因为你有结束括号(),Javascript将尝试将Document对象作为函数执行。因为Document对象不是函数,所以会引发TypeError异常。
答案 1 :(得分:1)
取自jQuery网站:
许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用。如果我们需要在jQuery旁边使用另一个JavaScript库,我们可以通过调用$ .noConflict()将$的控制权返回给另一个库:
您可以阅读所有相关内容here。
答案 2 :(得分:1)
像所有其他答案状态一样
$(function(){
...
});
真的只是
jQuery(function(){
});
并且第二个将工作相同,在您的示例中放置的其他类型函数之间的区别在于第一个必须从某处调用,其中作为jQuery版本 - 如果jQuery在HTML中加载它文件就绪后会自动运行。
答案 3 :(得分:0)
你的第一个例子是一个自动执行的函数,它在定义后立即开始执行,而第二个例子是在文档准备好被操作时由jQuery执行。
为了更好地理解第一种模式有用的原因,您可以参考this SO answer。
您还可以在.ready()
function的文档中阅读有关将函数传递给jQuery的更多信息。