JavaScript函数声明的核心在于明确调用者、this绑定及提升特性,推荐使用具名函数声明;函数表达式适合闭包和回调;箭头函数无this绑定,适用于轻量回调。

JavaScript 函数声明的核心在于明确“谁来调用”“怎么绑定 this”“能否提前使用”,不同方式直接影响可读性、调试体验和运行行为。最常用且推荐的是函数声明,其余方式各有适用场景,不能简单说哪个“更好”,而要看具体需求。
函数声明(function declaration)
这是最传统、最清晰的写法,语法固定,有名字,支持提升。
- 写法:以 function 开头,后面紧跟函数名、括号参数、花括号函数体
- 特点:整个函数会被提升到作用域顶部,可以在声明前调用
- 适合定义工具函数、模块主逻辑、需要被多次调用的命名函数
- 函数对象自带
name属性,调试时堆栈清晰,比如sum.name === 'sum'
函数表达式(function expression)
把函数当作值来处理,通常赋给变量,本质是“创建一个函数再存起来”。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 写法:用 const 或 let 声明变量,右边是
function() { ... }(常无名) - 特点:只有变量声明被提升,函数本身不会提升;必须先定义后调用
- 适合封装私有逻辑、配合闭包、动态生成函数或作为回调传入
- 可以是命名函数表达式(如
const fn = function foo() { ... }),便于调试,但名字仅在内部可用
箭头函数(arrow function)
ES6 引入的简洁语法,没有自己的 this 和 arguments,适合轻量回调。
立即学习“Java免费学习笔记(深入)”;
- 写法:用 => 连接参数和函数体,单参数可省括号,单表达式可省
{}和return - 特点:不绑定
this,继承外层词法作用域的this;不可用作构造函数;无arguments对象(改用剩余参数...args) - 适合事件监听、数组方法(map/filter)中的回调、简化短逻辑
- 注意:不能用于需要动态
this的场景(如对象方法、Vue/React 类组件生命周期)
其他较少用但需了解的方式
包括立即执行函数(IIFE)、Function 构造函数、以及构造函数(带 new 调用的函数)。
- IIFE 形如
(function(){ ... })(),用于隔离作用域、避免变量污染 -
new Function('a', 'b', 'return a + b')动态生成函数,但需字符串解析,性能差且有安全风险,基本不用 - 构造函数是普通函数加
new调用,用于创建实例对象,内部用this绑定属性

















