函数表达式是 JavaScript 中定义函数的一种方式,它比函数声明更灵活。下面详细介绍函数表达式的基础知识。
const functionName = function(parameters) {
// 函数体
return value;
};
函数声明会被提升(hoisting),可以在定义前调用
sayHello(); // 正常工作
function sayHello() {
console.log("Hello!");
}
函数表达式不会被提升,必须在定义后调用
sayHi(); // 报错:sayHi is not a function
const sayHi = function() {
console.log("Hi!");
};
函数表达式可以是匿名的(没有名称):
const greet = function() {
console.log("Hello there!");
};
也可以有名称,这在调试时很有用:
const factorial = function fac(n) {
return n < 2 ? 1 : n * fac(n - 1);
};
console.log(factorial(5)); // 120
可以定义后立即执行:
(function() {
console.log("立即执行!");
})();
// 带参数的IIFE
(function(name) {
console.log("Hello, " + name);
})("Alice");
函数表达式可以作为参数传递给其他函数:
setTimeout(function() {
console.log("1秒后执行");
}, 1000);
ES6 引入的更简洁的语法:
const add = (a, b) => a + b;
const square = x => x * x;
const sayHello = () => console.log("Hello!");
函数表达式提供了更大的灵活性,是 JavaScript 函数式编程的重要组成部分。