以下几行代码有什么区别?
//Function declaration
function foo() { return 5; }
//Anonymous function expression
var foo = function() { return 5; }
//Named function expression
var foo = function foo() { return 5; }
- 什么是命名/匿名函数表达式?
- 什么是声明函数?
- 浏览器如何不同地处理这些结构?
对类似问题(var functionName = function(){}与function functionName(){})的回答有什么不完全正确?
功能声明
由于函数提升,可以在定义之后和定义之前调用以这种方式声明的函数。
函数表达式
命名函数表达式
匿名函数表达式
foo()
创建后才能调用。立即调用函数表达式(IIFE)
结论
Crockford建议使用函数表达式,因为它可以清楚地表明它
foo
是一个包含函数值的变量。好吧,就我个人而言,除非有理由表达,否则我更喜欢使用声明。