写代码的时候,经常会看到函数后面跟着一对括号,比如 getUserInfo() 或者 calculateTotal(a, b)。这个括号不是随便加的,里面写的东西直接决定了函数怎么工作。
括号里写的是参数,也就是函数需要的“输入”
你可以把函数想象成一台咖啡机,而参数就是你放进机器里的原料。你想做一杯拿铁,就得告诉它:要咖啡、加牛奶、糖放两份。这些信息,就是通过括号传进去的。
比如下面这个简单的函数:
function greet(name) {
console.log("你好," + name);
}
这里的 name 就是参数。调用的时候写 greet("小明"),括号里填的就是实际传进去的值,也叫“实参”。
可以有多个参数,用逗号隔开
如果函数需要更多信息,就多写几个参数。比如计算折扣价:
function getDiscountPrice(original, discountRate) {
return original * (1 - discountRate);
}
// 调用时传两个值
getDiscountPrice(100, 0.2); // 原价100,打8折,结果80
括号里按顺序写就行,第一个对应 original,第二个对应 discountRate。
没有参数也要留空括号
有些函数不需要任何输入,比如获取当前时间:
function getCurrentTime() {
return new Date().toLocaleTimeString();
}
// 调用时括号不能少
getCurrentTime();
哪怕里面没东西,括号也得留着,不然语法就错了。
参数可以带默认值
ES6 开始支持默认参数,意思是你不传的时候,它有个备选方案:
function sendEmail(to, subject = "无主题", content = "请查看附件") {
console.log("发送邮件给:" + to);
console.log("主题:" + subject);
console.log("内容:" + content);
}
sendEmail("admin@example.com");
// 主题和内容会用默认值
这样调用更灵活,不用每次都写全。
还有一种情况:传函数进来
有时候括号里写的不是数据,而是一个函数本身。比如数组的 map 方法:
const numbers = [1, 2, 3];
const doubled = numbers.map(function(x) {
return x * 2;
});
这里括号里传的是一个处理每个元素的函数,系统会自动调用它。
说到底,函数括号里写什么,取决于这个函数设计时需要哪些信息。你调用的时候,就照着它的“需求清单”填进去就行。