2014-02-24 32 views
-1
$(document).ready(function(){ 
    var dash = function(){ 
      return{ 
      bindEvents: function(){ 
      } 
      };  
    }(); 
window.methods = dash; 
methods.bindEvents(); 
}); 

上面的代码不列入工作而不 “()” 的含义。请解释为什么我们需要使用????什么是这个代码 “()”[闭合]

  return{ 
     bindEvents: function(){ 
           } 
     }; 

工作正常。但如果我将大括号放在return语句下面。它会抛出一个错误

  return 
      {     // throws an error 
     bindEvents: function(){ 
           } 
      }; 

pls解释。

+0

你是指第7行吗? – miszczu

+0

是伙计....... – Arunkumar

+1

,因为它是作为一个IIFE工作的......该函数返回一个对象...它可以被简化为'$(document).ready(function(){var __ dash = { bindEvents:函数(){}} ; window.methods =破折号; methods.bindEvents(); });' –

回答

2

让我们来看看您在提问中提到的几点:

$(document).ready(function(){ 
    var dash = function(){ 
     return{ 
      bindEvents: function(){} 
     };  
    }(); 
    window.methods = dash; 
    methods.bindEvents(); 
}); 

1 - 上述代码在没有“()”的情况下不起作用。请解释为什么我们需要使用????

因为这是(IIFE - 立即调用的函数表达式)语法这意味着它是尽快执行本身的文档加载,认为jQuery库,它是开发同样的方式表达。

return 
     { // throws an error 
     bindEvents: function(){} 
     }; 

2 - 但如果我对齐return语句下面的大括号。它会抛出一个错误

是的,编译器会警告,有一个语法错误,因为如果你移动你的大括号到行,然后当你使用浏览器来查看你的页面或你的功能,那么它做了什么,它会自动添加一个;,因此它变成return;

所以输出是一样的东西:

return; 
     { // throws an error 
     bindEvents: function(){} 
     }; 

它下面有哪些是没有得到,因此导致问题出现,从它返回一个object

0

它会立即执行你定义有

function() { 
return{ 
    bindEvents: function(){} 
    };  
} 

没有它dash将指向你定义的函数的功能,有了它dash将包含在这种情况下,对象funcion执行结果:

{ 
    bindEvents: function(){} 
}