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

时间:2011-09-30 18:31:54

标签: javascript jquery anonymous-function iife

这两者之间有什么区别:

$(function () {
    // do stuff
});

(function () {
    // do stuff
})();

5 个答案:

答案 0 :(得分:46)

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

答案 1 :(得分:22)

$(function() {});

的jQuery快捷方式
 $(document).ready(function() { 
     /* Handler for .ready() called. */ 
 });

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

答案 2 :(得分:4)

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

答案 3 :(得分:3)

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

jQuery就是这样的。

window.jQuery = window.$ = function(arg) {
    if (typeof arg == 'function') {
        // call arg() when document is ready
    } else {
       // do other magics
    }
}

所以你只是调用jQuery函数并传入一个函数,该函数将在文档就绪时调用。

“自执行匿名函数”与执行此操作相同。

function a(){
    // do stuff
}
a();

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

答案 4 :(得分:1)

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

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

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