什么';var函数和javascript中的函数有什么区别?

什么';var函数和javascript中的函数有什么区别?,javascript,scope,Javascript,Scope,可能重复: 我已经了解了var a=1,正在定义一个局部变量,但是说到函数,我认为它只在当前范围内可用,因为var变量的行为,下面两个代码段之间有什么区别 function aPrint() { console.log('a'); } var a = function aPrent() { console.log('a'); } 这里有一篇最好的文章可以帮助你 提及 函数aPrint(){} 声明一个函数(但不执行它)。 它通常在花括号之间有一些代码 var a=aPrint() 声

可能重复:

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

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

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

}

这里有一篇最好的文章可以帮助你

提及

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

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

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

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

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

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

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


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

    解释多么简洁!感谢你指出,这个链接已经失效了。有重定向链接吗?这是一个很好的例子,说明了为什么你不直接链接,-1
    var a = function() {
        console.log('a');
    }