使用函数表达式而不是函数声明有什么好的情况?

时间:2015-11-04 08:49:10

标签: javascript function function-declaration function-expression

我更喜欢一直使用函数声明,因为我可以将函数放在源文件的任何位置。如果我使用函数表达式,则必须将函数放在源文件的顶部。

使用函数表达式而不是函数声明是否有好的情况?

else {
    for (i=0; i<20; i++)
            A[0] = 0.5;
    for (i=1; i<20;i++ )
            A[i] = i-1*K/3.0d ;
}

1 个答案:

答案 0 :(得分:1)

所有变量声明都悬挂在作用域的顶部,所有函数定义也悬挂在作用域的顶部。因此

console(foo()); // prints foo
function foo(){return 'foo'};

console(foo()); // complain foo is not function, it is undefined
var foo = function(){return 'foo'};

第二个例子与此相同:

var foo;
console.log(foo());
foo = function(){}

使用第二个表达式的原因将来自您的编程逻辑。例如:

var foo = MY_ENV_VAR ? function(){return true} : function(){return false}

或运行以下示例以便更好地理解:

var bar;                                                                                                                                                                                                

if (true) {
  function foo(){return 'foo'};
  bar = function(){return 'hey'};
} else {
  function foo(){return 'another'};
  bar = function(){return 'bar'};
}
console.log(foo());
console.log(bar());

第一个日志将是another,因为JS编译器将函数声明放在作用域的顶部,第二个声明只是覆盖第一个。而第二个日志输出if语句中指定的函数的结果,该结果将为hey