1 函数定义:多种方式与适用场景
JavaScript函数定义主要有三种方式:函数声明、函数表达式和箭头函数。函数声明具有函数提升特性,适合在代码任何位置调用;函数表达式必须在定义后使用,更适合条件性函数定义;箭头函数则提供更简洁的语法和词法this绑定。
// 函数声明
function classicSum(a, b) {
return a + b;
}
// 函数表达式
const expressionSum = function(a, b) {
return a + b;
};
// 箭头函数
const arrowSum = (a, b) => a + b;
2 参数传递:灵活处理的艺术
JavaScript函数的参数传递极其灵活,支持默认参数、剩余参数和解构赋值等现代特性,极大增强了函数处理能力。
// 默认参数与剩余参数
function createUser(name, age = 18, ...hobbies) {
console.log(`${name} is ${age} years old`);
console.log(`Hobbies: ${hobbies.join(', ')}`);
}
createUser('Alice', 25, 'reading', 'coding', 'gaming');
3 作用域与闭包:函数的超能力
闭包是JavaScript中最强大的特性之一,允许函数访问并记住其词法作用域中的变量,即使函数在其作用域外执行。
function createCounter() {
let count = 0;
return {
increment: () => ++count,
decrement: () => --count,
getCount: () => count
};
}
const counter = createCounter();
console.log(counter.increment()); // 1
console.log(counter.increment()); // 2
4 高阶函数与函数组合
高阶函数是接受函数作为参数或返回函数的函数,它们是函数式编程的基石。
// 高阶函数示例
const withLogger = (fn) => {
return (...args) => {
console.log(`调用函数: ${fn.name}`);
console.log(`参数: ${args}`);
const result = fn(...args);
console.log(`结果: ${result}`);
return result;
};
};
const add = (a, b) => a + b;
const loggedAdd = withLogger(add);
loggedAdd(3, 5);
5 异步函数:从回调到async/await
JavaScript异步处理经历了回调、Promise到async/await的演进,使异步代码变得直观易读。
// async/await示例
async function fetchUserData(userId) {
try {
const response = await fetch(`https://api.example.com/users/${userId}`);
const data = await response.json();
return processUserData(data);
} catch (error) {
console.error('获取用户数据失败:', error);
throw error;
}
}
// 使用
fetchUserData(123)
.then(data => console.log(data))
.catch(error => console.error(error));
JavaScript函数远不止这些内容,但掌握这些核心概念将使你能够编写更清晰、更强大、更易维护的代码。函数作为JavaScript的一等公民,其深度和灵活性正是这门语言如此强大的关键所在。
298

被折叠的 条评论
为什么被折叠?



