جاوااسکریپت چیست و از کجا باید شروع کرد؟ — بخش اول
جاوااسکریپت فقط زبان مرورگر نیست؛ روی سرور و وسط فلوهای اتوماسیون هم اجرا میشود. در این بخش اول، شش مفهوم پایه را با مثالهای کوتاه میبینیم و میگوییم چه چیزهایی را فعلاً باید نادیده بگیرید.
اول یک سوءتفاهم قدیمی را رفع کنیم: جاوااسکریپت هیچ ربطی به جاوا ندارد. اسمشان شبیه است چون در دههی نود جاوا محبوب بود و بازاریابی حکم کرد. مثل شباهت «کره» و «کرهی زمین».
جاوااسکریپت دقیقاً چه میکند؟
HTML میگوید چه چیزی روی صفحه باشد. CSS میگوید چه شکلی باشد. جاوااسکریپت میگوید چه اتفاقی بیفتد.
وقتی روی دکمهای میزنید و منویی باز میشود، وقتی فرمی قبل از ارسال به شما میگوید ایمیل اشتباه است، وقتی عددی روی صفحه بدون رفرش عوض میشود — همه جاوااسکریپت است.
اما این فقط یکسومِ ماجراست.
سه جایی که اجرا میشود

سال ۲۰۰۹ یک نفر جاوااسکریپت را از مرورگر بیرون کشید و اسمش را گذاشت Node.js. از آن روز، همان زبان روی سرور هم اجرا میشود: ساختن API، خواندن فایل، اتصال به پایگاه داده.
و جای سومی هم هست که برای کار ما مهم است: گره Code در n8n. آنجا چند خط جاوااسکریپت مینویسید تا دادهای را که از گره قبلی آمده شکل بدهید. کوچکترین محیط ممکن، و اتفاقاً بهترین جا برای تمرین — چون نتیجه را بلافاصله میبینید و چیزی خراب نمیشود.
شش چیزی که اول باید بلد شوید

۱. متغیر — جایی برای نگه داشتن یک مقدار
let count = 5; // بعداً میتواند عوض شود
const name = "سارا"; // ثابت است
count = 6; // مجاز
name = "رضا"; // خطا
قاعدهی ساده: تا وقتی مطمئن نیستید، const بنویسید. اگر جایی لازم شد عوضش کنید، آنوقت به let تغییرش دهید. اگر جایی var دیدید، کد قدیمی است.
۲. نوع داده — عدد و متن یکی نیستند
2 + 3 // 5
"2" + "3" // "23" ← به هم چسبیدند
"2" + 3 // "23" ← عدد هم متن شد
این اولین باگ همه است. وقتی داده از یک فرم یا API میآید، اعداد معمولاً به شکل متن میرسند. Number(x) تبدیلشان میکند.
۳. شرط — اگر اینطور بود
if (price > 500000) {
discount = 10;
} else if (price > 200000) {
discount = 5;
} else {
discount = 0;
}
یک تله: = یعنی «مقدار بده»، === یعنی «مساوی است؟». همیشه سهتایی بنویسید. دوتایی (==) هم کار میکند ولی گاهی نتیجهی عجیب میدهد.
۴. حلقه — همان کار روی همهی عضوها
const names = ["سارا", "رضا", "مینا"];
for (const n of names) {
console.log("سلام " + n);
}
و شکل کوتاهترش که در کار واقعی بیشتر میبینید:
const upper = names.map(n => n.trim());
map روی هر عضو یک کار انجام میدهد و فهرست تازهای برمیگرداند. اگر با جیسون کار میکنید، بیشتر از هر چیز دیگری از همین استفاده خواهید کرد.
۵. تابع — یک بار بنویس، هر جا صدا بزن
function greet(name) {
return "سلام " + name;
}
greet("سارا"); // "سلام سارا"
شکل مدرنترش:
const greet = (name) => "سلام " + name;
هر دو یک کار میکنند. دومی کوتاهتر است و در کد امروزی رایجتر.
۶. شیء و آرایه — همان ساختار جیسون
const user = {
name: "سارا",
tags: ["vip", "tehran"]
};
user.name; // "سارا"
user.tags[0]; // "vip"
اگر مقالهی جیسون را خواندهاید، این آشناست. تفاوت کوچکی هست: در جاوااسکریپت لازم نیست کلیدها داخل گیومه باشند.
چه چیزهایی را فعلاً نادیده بگیرید
اینجا جایی است که بیشتر آموزشها آدم را غرق میکنند. اینها را الان لازم ندارید:
- کلاس و شیءگرایی
async / awaitو پرامیس- ریاکت، ویو، یا هر فریمورک دیگری
- تفاوت
thisدر حالتهای مختلف - ماژول و
import
هر کدام بهجای خودش لازم میشود، ولی نه حالا. با همان شش تای بالا میشود هشتاد درصد کارهای عملی — بهخصوص در اتوماسیون — را انجام داد.
تمرین امروز
یک گره Code در n8n باز کنید و این را بنویسید:
const items = ["۱۲۰۰۰", "۴۵۰۰", "۹۹۰"];
const total = items
.map(x => Number(x))
.reduce((sum, x) => sum + x, 0);
return [{ json: { total } }];
اگر فهمیدید چرا اول map لازم است و بعد reduce، بخش اول را تمام کردهاید.
در بخش دوم سراغ کار با API، مدیریت خطا و نوشتن کدی میرویم که شش ماه بعد هم خوانده شود.