JavaScript函数参数完全指南:从基础到高级技巧,一网打尽!

一、函数参数的基本使用

1.1 基本参数传递

javascript 复制代码
// 基本参数
function greet(name, message) {
    return `${name}, ${message}!`;
}

console.log(greet("Alice", "Good morning"));
// "Alice, Good morning!"

1.2 默认参数(ES6+)

javascript 复制代码
// 默认参数值
function createUser(name, role = "user", isActive = true) {
    return { name, role, isActive };
}

console.log(createUser("Bob"));
// { name: 'Bob', role: 'user', isActive: true }
console.log(createUser("Carol", "admin"));
// { name: 'Carol', role: 'admin', isActive: true }
console.log(createUser("Eve", "user", false));
// { name: 'Eve', role: 'user', isActive: false }

1.3 剩余参数(Rest Parameters)

javascript 复制代码
// 收集所有剩余参数
function sum(prefix, ...numbers) {
    const total = numbers.reduce((acc, val) => acc + val, 0);
    return `${prefix}: ${total}`;
}

console.log(sum("结果", 1, 2, 3, 4)); // "结果: 10"

1.4 函数自带的arguments关键字

javascript 复制代码
function sum() {
    let total = 0;
    for (let i = 0; i < arguments.length; i++) {
        total += arguments[i];
    }
    console.log("结果:", total);  // "结果: 10"
}

sum(1, 2, 3, 4);

二、参数处理技巧

2.1 使用对象解构处理多个参数:提高可读性和可维护性

javascript 复制代码
// 对象参数解构
function displayUser({ name, age, email = "N/A" }) {
    console.log(`名称: ${name}`);
    console.log(`年龄: ${age}`);
    console.log(`邮箱: ${email}`);
}

const user = { name: "Dave", age: 30 };
displayUser(user);
// 名称: Dave
// 年龄: 30
// 邮箱: N/A

// 数组参数解构
function getFirstAndLast([first, , , last]) {
    return { first, last };
}

const colors = ["red", "green", "blue", "yellow"];
console.log(getFirstAndLast(colors));
// { first: 'red', last: 'yellow' }

2.2 优先使用默认参数 :代替逻辑或(||)操作符

javascript 复制代码
// 推荐
function greet(name = '访客') {}

// 不推荐
function greet(name) {
  name = name || '访客';
}

2.3 合理使用rest参数:代替arguments对象

javascript 复制代码
// 推荐 (ES6+)
function sum(...numbers) {}

// 不推荐 (ES5)
function sum() {
  var numbers = Array.prototype.slice.call(arguments);
}

总结

如果你喜欢本教程,记得点赞+收藏!关注我获取更多JavaScript开发干货。

相关推荐
im_AMBER2 分钟前
告别“玄学”UI:从“删代码碰运气”到“控制 BFC 结界”
前端·css
bjzhang752 分钟前
使用 HTML + JavaScript 实现文件树
javascript·html·文件树
千寻girling5 分钟前
《 MongoDB 教程 》—— 不可多得的 MongoDB
前端·后端·面试
攀登的牵牛花7 分钟前
前端向架构突围系列 - 状态数据设计 [8 - 3]:服务端状态与客户端状态的架构分离
前端
掘金安东尼11 分钟前
⏰前端周刊第 452 期(2026年2月2日-2月8日)
前端·javascript·github
古茗前端团队13 分钟前
业务方上压力了,前端仔速通RGB转CMYK
前端
ArkPppp15 分钟前
NestJS全栈实战笔记:优雅处理 Entity 与 DTO 的映射与字段过滤
javascript·nestjs
广州华水科技27 分钟前
单北斗变形监测一体机在基础设施安全与地质灾害监测中的应用价值分析
前端
钟智强28 分钟前
React2Shell:CVE-2025-66478 Next.js 远程执行漏洞深度分析与代码剖析
开发语言·javascript·ecmascript
Dragon Wu33 分钟前
Electron Forge集成React Typescript完整步骤
前端·javascript·react.js·typescript·electron·reactjs