第3章: 函数
什么是函数?
函数是一段可以重复使用的代码块,用于执行特定的任务。函数可以接收参数,并返回结果。
函数声明
1. 函数声明 (传统方式)
function greet(name) {
return "你好, " + name + "!";
}
console.log(greet("张三")); // 输出: 你好, 张三!
2. 函数表达式
const greet = function(name) {
return "你好, " + name + "!";
};
console.log(greet("李四")); // 输出: 你好, 李四!
3. 箭头函数 (ES6)
const greet = (name) => {
return "你好, " + name + "!";
};
// 简写形式
const greetSimple = name => "你好, " + name + "!";
console.log(greetSimple("王五")); // 输出: 你好, 王五!
函数参数
1. 默认参数
function greet(name = "朋友") {
return "你好, " + name + "!";
}
console.log(greet()); // 输出: 你好, 朋友!
console.log(greet("小明")); // 输出: 你好, 小明!
2. 剩余参数
function sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3, 4, 5)); // 输出: 15
3. 解构参数
function createUser({ name, age, city }) {
return `用户 ${name}, ${age}岁, 来自${city}`;
}
const user = { name: "张三", age: 25, city: "北京" };
console.log(createUser(user));
函数返回值
函数可以使用 return 语句返回值。如果没有 return 语句,函数返回 undefined。
function add(a, b) {
return a + b;
}
function logMessage(message) {
console.log(message);
// 没有返回值,返回 undefined
}
console.log(add(3, 5)); // 输出: 8
console.log(logMessage("Hello")); // 输出: Hello, 然后输出: undefined
作用域
作用域决定了变量的可访问范围:
// 全局变量
let globalVar = "我是全局变量";
function testScope() {
// 局部变量
let localVar = "我是局部变量";
console.log(globalVar); // 可以访问
console.log(localVar); // 可以访问
}
console.log(globalVar); // 可以访问
// console.log(localVar); // 错误: 无法访问
回调函数
回调函数是作为参数传递给另一个函数的函数:
function calculate(a, b, callback) {
return callback(a, b);
}
function add(x, y) {
return x + y;
}
function multiply(x, y) {
return x * y;
}
console.log(calculate(5, 3, add)); // 输出: 8
console.log(calculate(5, 3, multiply)); // 输出: 15