正在加载...

函数参数

上一课把步骤打包装进一个名字;括号还是空的。真正的程序需要输入——名字、合计、消息——好让同一段函数体用不同值工作。这些有名字的空位叫形参(parameters)。调用时递进去的值叫实参(arguments)。

形参与实参

写 function greet(name) { … } 时,name 是形参:函数体里的本地名字。写 greet("Sara") 时,"Sara" 是实参:这次调用填进该空位的具体值。同一份菜谱,不同食材。

各自写在哪里

📊 形参与实参对照

概念 写在哪里 日常比喻
形参 声明时的 () 里 贴着 name 标签的空碗
实参 调用时的 () 里 你倒进去的东西——"Sara"
顺序 从左到右 第一个实参 → 第一个形参
默认值 声明里 name = "friend" 没带东西时碗里已有备用
缺位 实参个数更少的调用 没有默认值时该形参为 undefined

形参属于声明。实参随每次调用出现。把两个词搞混是新手常见失误——习惯养成前把表放在手边。

一个形参

javascript
function greet(name) {
console.log("Hello, " + name);
}
greet("Sara");

一个输入,一个空位

name 在 greet 里等待。调用传入 "Sara"。函数体拼出 Hello, Sara 并打印。只改实参、保留函数体——这就是形参的价值。

两个形参

javascript
function add(a, b) {
console.log(a + b);
}
add(3, 4);

两个空位,两个值

用逗号列出形参:a, b。按相同顺序传实参:3 进 a,4 进 b。日志显示 7。函数体没有写死这些数字——调用提供它们。

顺序很重要

javascript
function label(color, surface) {
console.log(color + " on " + surface);
}
label("red", "wall");
label("wall", "red");

顺序就是约定

第一次调用打印 red on wall。第二次打印 wall on red——同一函数,实参对调。JavaScript 不会猜哪个值「像颜色」。位置说了算。

默认形参

javascript
function greetFriend(name = "friend") {
console.log("Hi, " + name);
}
greetFriend("Ali");
greetFriend();

没传入时的备用值

name = "friend" 设了默认值。greetFriend("Ali") 仍用 "Ali"。空括号的 greetFriend() 用 "friend"。调用方跳过空位时,默认值保护函数体。

缺少实参会变成 undefined

javascript
function showId(id) {
console.log(id);
}
showId();

既没值也没默认

showId() 什么也没传给 id。没有默认值时,id 是 undefined,打印的也是它。不是崩溃——而是提醒你忘了实参,或该加默认值。

把字符串传给页面

还是之前的 DOM 写法,但文案由实参拼出。同一函数可以欢迎不同客人——只改调用即可。下面的 HTML 演示正是如此。

在页面上展示形参

声明一个接收客人姓名的函数,把简短欢迎写进段落,再用真实字符串调用它。

带实参的页面调用

html
<!DOCTYPE html>
<html>
<head>
<title>parameters — page</title>
</head>
<body>
<p id="msg">…</p>
<script>
function welcome(guest) {
let box = document.getElementById("msg");
box.textContent = "Hello, " + guest;
}
welcome("Omar");
</script>
</body>
</html>

页面显示 Hello, Omar。guest 是形参;"Omar" 是实参。只改调用里的字符串,刷新后看新行。下一课是 return——把值从函数里送出去。

自己动手

  1. 写 function hello(name),打印 "hi " 加上 name,用你的名字调用。
  2. 写 function sum(x, y),打印 x + y,用两个数字调用。
  3. 对两个形参的函数调用两次并交换实参,比较日志。
  4. 加上如 title = "guest" 的默认值;一次带值、一次空 () 调用。
  5. 无实参、无默认值调用单形参函数;在控制台确认 undefined。
  6. 在 HTML 演示里只改实参字符串,刷新并阅读段落。

常见错误

  • 函数体需要值却用空 () 调用——没有默认就会得到 undefined
  • 对调实参顺序还指望 JavaScript「知道」谁是谁
  • 把形参(声明)和实参(调用)搞混
  • 两个形参或两个实参之间漏掉逗号
  • 在这里找返回值——那是下一课;本页只讲输入

小结

  • 形参是声明 () 里的名字
  • 实参是调用时传入的值
  • 顺序从左到右——第一对第一、第二对第二
  • 调用方跳过空位时,默认值会填上
  • 没有默认的缺位变成 undefined
  • 页面更新可以在文案里使用传入的值
  • 下一课:return——把结果从函数送出

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
8
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部