Quiz

解释`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 function
var foo = function () {
console.log('FOOOOO');
};
在GitHub上编辑