( var fat = function(x){ return x*x;})();
这样写 会提示语法错误
把var去掉后,
(  fat = function(x){ return x*x;})();
就不会提示 为什么

解决方案 »

  1.   

    ( fat = function(x){ return x*x;})    ();
    红色的这部分可以认为等价于 var fat = function(x){ return x*x;};
    fat(); 才等价于 ( fat = function(x){ return x*x;}) ();   所以 ( var fat = function(x){ return x*x;})(); 自然不合语法标准。
      

  2.   

    ( 。) ();
    这是创建一个匿名函数
    fat = function(){} fat也只是指这个匿名函数的对象,它仍然是匿名函数。而( var fat = function(x){ return x*x;})(); 
    中的
    var fat =function(){}; 
    则是建立命名函数的标准写法。所以已经不是匿名函数了。自然不能把它用()括起来当作匿名函数写和用。
      

  3.   

    还不理解表达式的返回~~
    每个表达式都有返回值的
    var a = function(){}  返回  undefined
    a = function(){}    返回  a 基础不花时间  其他东西都是浪费时间
      

  4.   

    我觉得,(var fat = function(x){ return x*x;})表示执行这个函数,var声明了一个局部变量fat,然后又直接执行,所以找不到这个fat 
    没有 var ,就是隐式创建了一个全局变量“fat”,这样就不会报错了
    纯属个人理解....