函数表达式(Function Expressions)是JavaScript中定义函数的一种方式,它允许你将函数作为一个值赋值给变量、传递给其他函数或在其他表达式中使用。函数表达式与函数声明的主要区别在于,函数表达式不会被提升(hoisting),这意味着它们必须在定义之后才能被调用。
下面是一个函数表达式的基本示例:
// 函数表达式
const add = function(a, b) {
return a + b;
};
// 调用函数表达式
console.log(add(2, 3)); // 输出:5
此外,函数表达式还可以是匿名函数(没有名称的函数)或具名函数(有名称的函数):
- 匿名函数表达式:
const multiply = function(a, b) {
return a * b;
};
console.log(multiply(2, 3)); // 输出:6
- 具名函数表达式:
const divide = function divideFunction(a, b) {
return a / b;
};
console.log(divide(6, 3)); // 输出:2
具名函数表达式中的名称(如divideFunction
)主要用于在函数内部递归调用。
函数表达式在JavaScript中广泛用于回调函数、立即调用的函数表达式(IIFE)、闭包等场景。以下是一些常见的应用场景:
- 回调函数:
setTimeout(function() {
console.log("Hello, World!");
}, 1000);
- 立即调用的函数表达式(IIFE):
(function() {
console.log("This function runs immediately!");
})();
- 闭包:
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 输出:1
console.log(counter()); // 输出:2
这些示例展示了函数表达式在不同上下文中的使用方式及其灵活性。