什么's var函数和javascript中的函数之间的区别

what's the difference between var function and function in javascript?

本文关键字:函数 之间 区别 javascript var 什么      更新时间:2023-09-26

可能重复:
JavaScript:var functionName=function(){}vs function functionName(){}
函数声明-函数表达式-作用域

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

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

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

第二个示例是"命名函数表达式"。变量声明被提升到定义它的作用域的顶部(就像函数声明一样),但赋值仍然发生在您期望的地方,所以在将函数赋值给变量之后才能调用函数。

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

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

您可能会发现,您很少使用命名函数表达式(尽管在调试时它可能很有用),因此通常最好使用匿名函数。在命名函数表达式中,名称只在函数本身的作用域中,因此通常不能按名称引用函数。

这里有一篇可能对您有所帮助的最佳文章。

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

  1. 函数aPrint(){}声明一个函数(但不执行它)。它通常在花括号之间有一些代码。

  2. var a=aPrint()声明一个变量,调用一个函数(aPrint),并将aPrint的值设置为函数的返回值。

  3. var a=新aPrint()基于aPrint函数创建对象的新实例。因此,变量现在是一个Object,而不仅仅是一个字符串或数字。

对象可以包含索引字符串、数字甚至函数,并且您可以向它们添加更多内容,它们非常棒。面向对象编程(OOP)的整个概念就是基于此的。