JavaScript函数参数完全指南
编程小白也能理解的函数参数知识点汇总
1. 基础参数:形参和实参
函数参数分为两种:
- 形参(Parameters):函数定义时声明的变量
- 实参(Arguments):函数调用时传入的具体值
// 形参: a, b
function add(a, b) {
return a + b;
}
// 实参: 5, 3
let result = add(5, 3); // 返回8
大白话:形参是函数定义时的”占位符”,实参是调用函数时实际传进去的值。
💡 提示:形参和实参的数量可以不同!JavaScript不会强制要求数量一致。
2. 默认参数值(ES6)
ES6允许给参数设置默认值,当没有提供相应参数或传入undefined时使用。
function greet(name = "朋友") {
return `你好, ${name}!`;
}
console.log(greet()); // "你好, 朋友!"
console.log(greet("小明")); // "你好, 小明!"
大白话:为参数设定默认值,就像”备胎”一样,当没有传入值时就用默认值。
⚠️ 注意:只有传入undefined时才会使用默认值,传入null会使用null值!
3. 剩余参数(…rest)
使用…语法将多个参数收集到一个数组中。
function sum(...numbers) {
return numbers.reduce((acc, num) => acc + num, 0);
}
console.log(sum(1, 2)); // 3
console.log(sum(1, 2, 3, 4)); // 10
大白话:剩余参数就像”收集器”,把所有未匹配的参数装进一个数组里。
💡 提示:剩余参数必须是最后一个参数!
📝 与arguments对象的区别:剩余参数是真正的数组,可以使用数组方法。
4. 对象参数解构
直接从传入的对象中提取需要的属性。
function showUser({ name, age, email }) {
console.log(`姓名: ${name}, 年龄: ${age}, 邮箱: ${email}`);
}
showUser({
name: "张三",
age: 25,
email: "zhangsan@example.com"
});
大白话:直接从对象中”拆包”出需要的属性,就像拆快递包裹一样。
⚠️ 注意:调用时必须传入对象,否则会报错!可以使用默认值避免:
function showUser({ name = "未知", age = 0 } = {}) {
// ...
}
5. 参数传递方式
JavaScript中参数传递都是按值传递:
- 基本类型(数字、字符串等):传递值的副本
- 对象类型:传递对象引用的副本
// 基本类型 - 不影响外部变量
function changeNum(num) {
num = 10;
}
let myNum = 5;
changeNum(myNum);
console.log(myNum); // 5(未变)
// 对象类型 - 修改属性会影响外部对象
function changeProp(obj) {
obj.name = "修改后的名字";
}
const person = { name: "张三" };
changeProp(person);
console.log(person.name); // "修改后的名字"
大白话:
- 基本类型:给你一张照片📷,你修改照片不影响原件
- 对象类型:给你一份地址📍,你按地址找到房子并装修,会影响实际房子
6. arguments对象
函数内部可用的类数组对象,包含所有传入的参数。
function showArguments() {
console.log(arguments.length); // 参数个数
console.log(arguments[0]); // 第一个参数
console.log(arguments[1]); // 第二个参数
}
showArguments("a", "b", "c");
大白话:arguments就像一个”收纳盒”,里面装了所有传入函数的参数。
⚠️ 注意:arguments不是真正的数组,不能直接使用数组方法!可通过Array.from(arguments)转换。
💡 现代JavaScript中建议使用剩余参数(…rest)替代arguments!
JavaScript函数参数知识点汇总 | 编程小白也能理解的指南
📌 记住:实践是掌握这些知识的唯一捷径!多写代码多尝试!