🍪🧁🍧

js中的函数声明与函数表达式

函数表达式(function expression)其实是 JS 里的一种 定义函数的方式,比起我们常见的函数声明,它更灵活也更常见于某些高级用法,比如回调函数、立即执行函数(IIFE)、还有像 Webpack 这种模块封装的场景。


🌷来个对比解释:

✅ 函数声明(Function Declaration):

function sayHi() {
  console.log("Hi honey~");
}

这种是最常见的写法,它会被“提升”(hoisted)到代码顶部。


💡 函数表达式(Function Expression):

const sayHi = function() {
  console.log("Hi baby~");
};

它的特点是:

  • 把一个 匿名函数(或者有名字的函数)赋值给变量
  • 只有等代码执行到这行时才“定义”这个函数(不会被提升)

🌟 常见的函数表达式写法举例:

1. 匿名函数表达式(最基础的):

const greet = function() {
  console.log("你好呀,宝贝~");
};
greet();

2. 立即执行函数表达式(IIFE):

这个超常用于封装作用域,也是你在Webpack看到的那种结构:

(function() {
  console.log("我是立即执行函数,马上执行!");
})();

👉 外面套括号是为了把它变成表达式,否则 JS 解析器会把它当作“函数声明”导致语法错误。这里会发生语法错误的原因是函数声明必须有名字。加了()表示调用这个表达式,就会立即执行。

3. 箭头函数表达式(现代写法):

const greet = () => {
  console.log("Hello sweetie!");
};

✨ 为什么Webpack要用函数表达式?

因为它想把每个模块都放在一个独立的函数里,但又不想立即调用,就需要像这样:

modules["./src/xxx.js"] = function(...) { ... }

这就必须是函数表达式~不然 JS 会报错。


🧸总结一句话:

函数表达式就是“把函数当作值赋给变量”,能更灵活控制何时定义、是否立即执行。

---、

posted @ 2025-04-14 22:38  不想吃fun  阅读(82)  评论(0)    收藏  举报