全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-16 7 分钟 ✍️ juanwangdev

参数传递

函数参数是函数与外界交互的桥梁,掌握参数传递方式让函数更加灵活。

基本参数

位置参数

JavaScript
function greet(name, age) {
  console.log(`${name} is ${age}`);
}

greet('Tom', 18);  // Tom is 18

形参与实参

JavaScript
function add(a, b) {  // a, b 是形参
  return a + b;
}

add(1, 2);  // 1, 2 是实参

默认参数

ES6支持参数默认值:

JavaScript
function greet(name = 'Guest') {
  console.log('Hello, ' + name);
}

greet();       // Hello, Guest
greet('Tom');  // Hello, Tom

默认值可以是表达式:

JavaScript
function greet(name, greeting = 'Hello, ' + name) {
  console.log(greeting);
}

greet('Tom');  // Hello, Tom

剩余参数

使用 ... 收集多余参数:

JavaScript
function sum(...numbers) {
  return numbers.reduce((a, b) => a + b, 0);
}

sum(1, 2, 3);      // 6
sum(1, 2, 3, 4);   // 10

与普通参数结合:

JavaScript
function log(level, ...messages) {
  console.log(`[${level}]`, ...messages);
}

log('INFO', 'User', 'logged in');  // [INFO] User logged in

arguments对象

ES5获取所有参数的方式:

JavaScript
function sum() {
  let total = 0;
  for (let i = 0; i < arguments.length; i++) {
    total += arguments[i];
  }
  return total;
}

sum(1, 2, 3);  // 6

注意:箭头函数没有 arguments,应使用剩余参数。

解构参数

对象解构

JavaScript
function createUser({ name, age = 18 }) {
  return { name, age };
}

createUser({ name: 'Tom' });  // { name: 'Tom', age: 18 }

数组解构

JavaScript
function getCoords([x, y]) {
  return { x, y };
}

getCoords([1, 2]);  // { x: 1, y: 2 }

参数传递机制

值传递

基本类型按值传递:

JavaScript
function change(x) {
  x = 2;
}

let a = 1;
change(a);
console.log(a);  // 1(不变)

引用传递

对象类型传递引用:

JavaScript
function change(obj) {
  obj.name = 'changed';
}

const user = { name: 'Tom' };
change(user);
console.log(user.name);  // changed

参数传递对比

方式语法特点
位置参数fn(a, b)按顺序传递
默认参数fn(a = 1)省略时使用默认值
剩余参数fn(...args)收集为数组
解构参数fn({a, b})直接解构

要点总结

  1. 默认参数让函数调用更灵活
  2. 剩余参数 ... 收集多余参数为数组
  3. 箭头函数没有 arguments,用剩余参数替代
  4. 基本类型值传递,对象类型引用传递
  5. 解构参数可提高代码可读性

📝 发现内容有误?点击此处直接编辑

← 上一篇 函数定义与调用
下一篇 → 箭头函数
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库