javascript中var函数和函数之间有什么区别?

时间:2012-01-31 12:43:52

标签: javascript scope

  

可能重复:
  JavaScript: var functionName = function() {} vs function functionName() {}
  Function declaration - Function Expression - Scope

我已经了解了var a = 1,正在定义一个局部变量,但是谈论函数,我认为它只在当前范围内可用,因为var变量的行为,以下两个代码片段之间有什么区别?

function aPrint() {
console.log('a');
}

var a = function aPrent() {
console.log('a');

}

2 个答案:

答案 0 :(得分:1)

您的第一个示例是“函数声明”。它声明了一个函数,该函数将在声明它的作用域中的任何位置可用(因此您可以在它出现在源代码中之前调用它)。这有时被称为“吊装”(因为,它被提升到其范围的顶部)。

您的第二个示例是“命名函数表达式”。变量声明被提升到定义它的作用域的顶部(如函数声明),但是赋值仍然发生在您期望的位置,因此在将函数分配给变量之后才能调用该函数。

还有第三个选项,它只是一个“函数表达式”,其中函数没有名称(它是一个匿名函数):

var a = function() {
    console.log('a');
}

您可能会发现您对命名函数表达式几乎没有用处(尽管它在调试时很有用),因此通常最好使用匿名函数。在命名函数表达式中,名称仅在函数本身的范围内,因此您无法正常通过名称引用该函数。

答案 1 :(得分:-1)

这是一篇可以帮助你的最佳文章。

参考http://www.dustindiaz.com/javascript-function-declaration-ambiguity/