Skip to content
登录后刷题更便捷

请解释`function foo() {}`和`var foo = function() {}`之间`foo`的用法上的区别。

难度:

前者是函数声明,后者是函数表达式。关键的区别在于函数声明会使函数体提升(具有与变量相同的提升行为),但函数表达式的函数体不能。有关变量提升的更多解释,请参阅上面关于变量提升的问题。如果你试图在定义函数表达式之前调用它,你会得到一个Uncaught TypeError: XXX is not a function的错误。

函数声明

js
foo(); // 'FOOOOO'
function foo() {
  console.log("FOOOOO");
}

函数表达式

js
foo(); // Uncaught TypeError: foo is not a function
var foo = function () {
  console.log("FOOOOO");
};
参考

内容仅供参考,难免有不恰当的地方,如果有问题欢迎及时反馈
部分内容来自网络,如果不慎侵犯您的权益,请联系我们,以便及时删除侵权内容