پارامترهای تابع
جلسهٔ قبل کار را زیر یک اسم بستهبندی کردید؛ پرانتزها خالی ماندند. برنامهٔ واقعی معمولاً ورودی میخواهد — اسم، جمع، پیام — تا همان بدنه با مقدارهای مختلف کار کند. آن جاهای خالیِ نامدار همان پارامترها هستند. مقداری که موقع صدا میدهید آرگومان است.
پارامتر و آرگومان
وقتی مینویسید function greet(name) { … }، name یک پارامتر است: اسم محلی داخل بدنه. وقتی مینویسید greet("Sara")، "Sara" آرگومان است: مقدار واقعی که برای این صدا آن جا را پر میکند. یک دستورپخت، مواد متفاوت.
هرکدام کجا نوشته میشود
📊 پارامتر در برابر آرگومان
| مفهوم | کجا مینویسید | جور روزمره |
|---|---|---|
| پارامتر | داخل () موقع اعلان |
کاسهٔ خالی با برچسب name |
| آرگومان | داخل () موقع صدا |
غذایی که میریزید — "Sara" |
| ترتیب | چپ به راست | آرگومان اول → پارامتر اول |
| پیشفرض | name = "friend" در اعلان |
اگر چیزی نیاوردید، کاسه از قبل ذخیره دارد |
| جای خالی | صدا با تعداد کمتر | آن پارامتر undefined میشود مگر پیشفرض داشته باشد |
پارامتر روی اعلان مینشیند؛ آرگومان با هر صدا میآید. قاطی کردن این دو کلمه اشتباه رایج مبتدیهاست — تا عادت جا بیفتد جدول را نزدیک نگه دارید.
function greet(name) {
console.log("Hello, " + name);
}
greet("Sara");
یک ورودی، یک جا
name داخل greet منتظر میماند. صدا "Sara" را میدهد. بدنه Hello, Sara را میسازد و چاپ میکند. آرگومان را عوض کنید، بدنه را نگه دارید — فایدهٔ پارامتر همین است.
function add(a, b) {
console.log(a + b);
}
add(3, 4);
دو جا، دو مقدار
پارامترها را با ویرگول بنویسید: a, b. آرگومانها را همان ترتیب بدهید: 3 به a میرسد، 4 به b. کنسول 7 را نشان میدهد. بدنه آن عددها را سختکد نکرده — صدا تأمینشان میکند.
function label(color, surface) {
console.log(color + " on " + surface);
}
label("red", "wall");
label("wall", "red");
قرارداد همان ترتیب است
صدای اول red on wall چاپ میکند. دومی wall on red — همان تابع، آرگومان جابهجا. JavaScript حدس نمیزند کدام «شبیه رنگ» است. موقعیت تصمیم میگیرد.
function greetFriend(name = "friend") {
console.log("Hi, " + name);
}
greetFriend("Ali");
greetFriend();
وقتی چیزی نیاید، ذخیره دارید
name = "friend" یک پیشفرض میگذارد. greetFriend("Ali") همان "Ali" را میگیرد. greetFriend() با پرانتز خالی سراغ "friend" میرود. پیشفرض بدنه را وقتی صدازننده یک جا را رد میکند امن نگه میدارد.
function showId(id) {
console.log(id);
}
showId();
نه مقدار، نه پیشفرض
showId() چیزی به id نمیدهد. بدون پیشفرض، id برابر undefined است و همان چاپ میشود. کرش نیست — علامت این است که آرگومان فراموش شده یا باید پیشفرض بگذارید.
رشته را به صفحه بدهید
همان الگوی DOM قبل، ولی پیام از آرگومان ساخته میشود. یک تابع میتواند مهمانهای مختلف را خوشآمد بگوید — فقط صدا عوض میشود. دموی 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 است — فرستادن مقدار از داخل تابع به بیرون.
خودتان تمرین کنید
function hello(name)بنویسید که"hi "بهاضافهٔnameرا چاپ کند؛ بعد با اسم خودتان صدا بزنید.function sum(x, y)بنویسید کهx + yرا چاپ کند؛ با دو عدد صدا بزنید.- یک تابع دوپارامتری را دو بار با آرگومان جابهجا صدا بزنید و لاگها را مقایسه کنید.
- پیشفرضی مثل
title = "guest"بگذارید؛ یکبار با مقدار، یکبار با()خالی صدا بزنید. - تابع یکپارامتری را بدون آرگومان و بدون پیشفرض صدا بزنید؛ در کنسول
undefinedرا ببینید. - در دموی HTML فقط رشتهٔ آرگومان را عوض کنید، رفرش کنید، پاراگراف را بخوانید.
اشتباههای رایج
- صدا با
()خالی وقتی بدنه مقدار میخواهد — بدون پیشفرض بهundefinedمیرسید - جابهجا کردن ترتیب آرگومان و انتظار اینکه JavaScript «بفهمد» کدام کدام است
- قاطی کردن پارامتر (اعلان) با آرگومان (صدا)
- فراموش کردن ویرگول بین دو پارامتر یا دو آرگومان
- دنبال مقدار برگشتی گشتن اینجا — آن درس بعد است؛ این صفحه فقط ورودی است
خلاصه
- پارامتر اسمهایی است داخل
()اعلان - آرگومان مقداری است که موقع صدا میدهید
- ترتیب چپ به راست است — اول با اول، دوم با دوم
- پیشفرض وقتی صدازننده جا را رد کند پر میکند
- جای خالی بدون پیشفرض میشود
undefined - بهروزرسانی صفحه میتواند از مقدار پاسدادهشده در پیام استفاده کند
- بعدی: return — نتیجه را از تابع بیرون بفرستید
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود