匿名Javascript函数还是存储在变量中?

时间:2014-01-15 10:06:37

标签: javascript function hoisting

有多种方法可以调用javascript函数,大部分时间我都在使用匿名函数,因为它可以在任何我喜欢的地方触发。

我似乎无法理解为什么使用变量方法而不是匿名函数。我的主要缺点是因为悬挂问题....

任何人都可以解释或提供一个现实生活中的例子,以便在变量中存储函数吗?

3 个答案:

答案 0 :(得分:2)

如果要在多个位置使用相同的功能,将其存储在变量中是有意义的。这使您可以遵守DRY(不要重复自己)原则。

想象一下,我们有一个简单的验证功能:

function isPositive(val){
   return val > 0;
}

不是在我需要验证的任何地方内联这个匿名函数,而是将函数存储在变量中以供将来使用。

var isPositive = function(val){  return val > 0;}

这为我提供了两大好处。首先,如果isPositive中存在问题,我可以在一个位置修复该问题,并且该函数的所有调用都将使用更新的行为。其次,当我第100次重新输入时,它会阻止我在代码中的某个地方搞乱这个功能。

答案 1 :(得分:2)

如果它在一个变量中,我可以随时随地访问该函数。

答案 2 :(得分:2)

如果您希望从多个地方进行相同的操作。像这样可能:

var renderPage = function() {
    // about 20 lines of render code        
}

$(window).on('resize', renderPage);
$('.my_btn').on('click', renderPage);

// render to initialize page
renderPage();

在这里不使用变量会很快变成一团糟:

$(window).on('resize', function() {
    // about 20 lines of render code
));

$('.my_btn').on('click', function() {
    // about 20 lines of render code
));

// about 20 lines of render code