2012-12-04 28 views
1

我对JavaScript很陌生,所以如果这个答案显而易见,或者我吠叫错误的树,我很抱歉!以两种不同的方式调用函数 - JavaScript

什么是在下面的代码片段的区别:

function primeAddNum(innerHTML) { 
    return function() { 
     addNum(innerHTML); 
     return false; 
    }; 
} 
var func = primeAddNum(innerHTML); 

第二个:

var func = function() { 
     return function() { 
      addNum(innerHTML); 
      return false; 
     }; 
}(); 

顶一个工作的方式我想它,但不是底部,但这对我来说不是非常重要。我想知道的是每块背后的逻辑,因为我看不出它们的区别。

+0

我知道这不是问题,但具有匿名函数返回另一个匿名函数是非常乱伦的。 – thatidiotguy

回答

2

与第二块的问题是,innerHTML是不确定的存在,因为你不及格了。他们将成为等效,如果你改变它:

var func = function(innerHTML) { 
    return function() { 
     addNum(innerHTML); 
     return false; 
    }; 
}(innerHTML); 
+0

谢谢,现在它变得更有意义。不能相信我现在已经看到了答案,因此我一直在为这件事而拉扯头发。 – FunnyOxymoron

+0

还要考虑Esailija的说法:具有自调用功能的第二种风格仅供一次使用。如果不重复整个事情,你不能创建新的功能。因此,如果您打算重新使用'primeAddNum',请使用第一个版本。 – bfavaretto

+0

如果它确实是'undefined',那么它不会使它变成un-'undefined',而只是捕获'innerHTML'而不是依赖外部引用。这当然是好的,但取决于代码没有必要。 – Esailija

-1

没有什么区别,你可以没有任何问题

1

很好用的第二个同时使用,只能创建一个func一次。但随着第一个,你可以创造出许多:

var func1 = primeAddNum(innerHTML); 
var func2 = primeAddNum(someOtherInnerHTML); 
相关问题