关于jquery:在JavaScript中自我声明匿名函数之前的美元符号?

Dollar sign before self declaring anonymous function in JavaScript?

这两者有什么区别:

1
2
3
$(function () {
    // do stuff
});

1
2
3
(function () {
    // do stuff
})();

首先使用jquery将函数绑定到document.ready事件。第二个声明并立即执行一个函数。


$(function() {});是jquery的快捷方式

1
2
3
 $(document).ready(function() {
     /* Handler for .ready() called. */
 });

(function() {})();是一个即时调用的函数表达式,或iife。这意味着它是一个表达式(不是一个语句),并且在创建之后立即调用它。


一个是jquery $(document).ready函数,另一个只是调用自身的匿名函数。


它们都是匿名函数,但立即调用(function(){})(),当文档准备就绪时调用$(function(){})

jquery的工作方式类似于这样。

1
2
3
4
5
6
7
window.jQuery = window.$ = function(arg) {
    if (typeof arg == 'function') {
        // call arg() when document is ready
    } else {
       // do other magics
    }
}

所以您只需要调用jquery函数并传递一个函数,这个函数将在文档就绪时被调用。

"自动执行匿名函数"与执行此操作相同。

1
2
3
4
function a(){
    // do stuff
}
a();

唯一的区别是您没有污染全局命名空间。


1
2
3
$(function () {
    // It will invoked after document is ready
});

一旦文档准备就绪,这个函数的执行意味着整个HTML应该在执行之前加载,但在第二种情况下,函数在创建后立即调用。

1
2
3
(function () {
    // It will invoked instantly after it is created
})();