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

这两者有什么区别:

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

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

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

$(function() {}); 是一个jQuery快捷方式

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

while (function() {})(); 是一个即时调用的函数expression式,或IIFE。 这意味着它的一个expression式(不是一个语句),并且在创build之后立即被调用。

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

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

jQuery的作品是这样的。

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

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

“自动执行匿名function”与此相同。

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

唯一的区别是你不会污染全局命名空间。

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

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

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