Avatar ·

JavaScript中var functionName = function() {}与function functionName() {}的区别

大家好!我是一名前端开发新手,遇到了一个困惑。在不同的项目和教程中,我看到了两种声明函数的方式: ```javascript // 方式1:Function Expression(函数表达式) var myFunc = function() { console.log("Hello from expression!"); }; // 方式2:Function Declaration(函数声明) function myFunc() { console.log("Hello from declaration!"); } ``` 乍一看它们做的是同一件事。但当我开始编写更复杂的代码时,我注意到了一些奇怪的行为。例如,如果我在函数声明之前调用它,一种方式有效,而另一种会报错: ```javascript // 这样能工作 sayHello(); // 输出 "Hello!" function sayHello() { console.log("Hello!"); } // 这样会报错 sayGoodbye(); // TypeError: sayGoodbye is not a function var sayGoodbye = function() { console.log("Goodbye!"); }; ``` 为什么会这样?这两种方式之间有什么根本区别?