JavaScript中的函数声明和函数定义有什么区别?我阅读了第5.3.2章from this book
但是,当嵌套时,函数声明可能 只出现在它们嵌套在函数的顶层。就是功能 定义可能不会出现在if语句,while循环或任何其他语句中。
但是不明白声明和定义之间的区别...请解释一下(注意:我理解函数表达和函数声明之间的区别!)
答案 0 :(得分:2)
在这种情况下,他们只是使用两个不同的术语来指代同一件事。官方*术语是"函数声明"。
官方来源是ECMAScript标准的第98页。
答案 1 :(得分:1)
重要的是区分两种情况:
var f1 = function() {...}
这通常被称为函数表达式。
function f2() {...}
这通常被称为函数声明。
无论你给它的名字是什么,var f1
都会被提升到包装函数的顶部(但是f1
只会在你编写的行上分配函数的值) 。 然而 f2
的整个函数声明将被提升到包装函数的顶部。
有一篇很棒的帖子详细解释了这一点here。