由于函数表达式和函数声明基本上做同样的事情,我什么时候应该使用哪个?

时间:2016-11-08 04:14:09

标签: javascript jquery function

正如问题所示,我应该何时使用

示例A(函数声明):

function abc(){
  // some code
}

abc();

over Example B(函数表达式):

var abc = function(){
  // some code
}

abc();

反之亦然。

我知道他们的性质不同但他们基本上只做同样的事情(如果他们不是,请纠正我),对吧?

那么如何判断我应该使用哪一个?

编辑:

我知道对于例A,无论何时由于吊装都可以调用该函数。

我真正想知道的是让您决定使用示例A或示例B的原因。

2 个答案:

答案 0 :(得分:1)

如果要在定义函数之前调用abc(),则只有第一个模式可用。

变量声明也会被提升,但不会被赋值,所以它将是未定义的,而函数已经完成了它的正文。

我想只有在我打算稍后重新分配它时才会使用var模式。

答案 1 :(得分:0)

通常,您应该尽可能使用函数声明语法。最好的理由是,如果在使用代码后在代码中定义函数,代码仍然有效。

stuff();

function stuff() {
    console.log("hello");
}

会奏效,但

stuff();

var stuff = function() {
    console.log("hello");
}

不会。

当您将匿名函数传递给另一个函数时,使用函数表达式。

doSomething(function() {
    console.log("done");
});

否则,两者都有效。