函数声明与函数定义JS

时间:2014-03-19 11:48:23

标签: javascript conceptual

JavaScript中的函数声明和函数定义有什么区别?我阅读了第5.3.2章from this book

  

但是,当嵌套时,函数声明可能   只出现在它们嵌套在函数的顶层。就是功能   定义可能不会出现在if语句,while循环或任何其他语句中。

但是不明白声明和定义之间的区别...请解释一下(注意:我理解函数表达和函数声明之间的区别!)

2 个答案:

答案 0 :(得分:2)

在这种情况下,他们只是使用两个不同的术语来指代同一件事。官方*术语是"函数声明"。

官方来源是ECMAScript标准的第98页。

答案 1 :(得分:1)

重要的是区分两种情况:

  • var f1 = function() {...} 这通常被称为函数表达式。

  • function f2() {...} 这通常被称为函数声明。

无论你给它的名字是什么,var f1都会被提升到包装函数的顶部(但是f1只会在你编写的行上分配函数的值) 。 然而 f2的整个函数声明将被提升到包装函数的顶部。

有一篇很棒的帖子详细解释了这一点here