解释`function foo() {}` 和 `var foo = function() {}` 之间在`foo` 使用方法上的差异
Topics
JavaScript
在GitHub上编辑
前者是一个函数声明,而后者是一个函数表达式。 关键的区别是,函数声明会使它的主体被提升,但函数表达式的主体没有被提升(它们有和变量一样的提升行为)。 想要了解更多关于提升的解释,请参阅 提升。 如果你试图在定义之前调用函数表达式,你将会得到一个 Uncaught TypeError: XXX is not a function
。
函数声明
foo(); // 'FOOOOO'function foo() {console.log('FOOOOO');}
函数表达式
foo(); // Uncaught TypeError: foo is not a functionvar foo = function () {console.log('FOOOOO');};