ASRIN

بیایید حرف بزنیم

ثبت سفارش
۲۰۲۶/۰۹/۰۱

جاوااسکریپت چیست و از کجا باید شروع کرد؟ — بخش اول

جاوااسکریپت فقط زبان مرورگر نیست؛ روی سرور و وسط فلوهای اتوماسیون هم اجرا می‌شود. در این بخش اول، شش مفهوم پایه را با مثال‌های کوتاه می‌بینیم و می‌گوییم چه چیزهایی را فعلاً باید نادیده بگیرید.

نمودار سه محل اجرای جاوااسکریپت: مرورگر، سرور با Node.js و گره Code در n8n

اول یک سوءتفاهم قدیمی را رفع کنیم: جاوااسکریپت هیچ ربطی به جاوا ندارد. اسمشان شبیه است چون در دهه‌ی نود جاوا محبوب بود و بازاریابی حکم کرد. مثل شباهت «کره» و «کره‌ی زمین».

جاوااسکریپت دقیقاً چه می‌کند؟

HTML می‌گوید چه چیزی روی صفحه باشد. CSS می‌گوید چه شکلی باشد. جاوااسکریپت می‌گوید چه اتفاقی بیفتد.

وقتی روی دکمه‌ای می‌زنید و منویی باز می‌شود، وقتی فرمی قبل از ارسال به شما می‌گوید ایمیل اشتباه است، وقتی عددی روی صفحه بدون رفرش عوض می‌شود — همه جاوااسکریپت است.

اما این فقط یک‌سومِ ماجراست.

سه جایی که اجرا می‌شود

نمودار سه محل اجرای جاوااسکریپت: مرورگر، سرور با Node.js و گره Code در n8n
کد تقریباً یکسان است؛ چیزی که در دسترستان است فرق می‌کند.

سال ۲۰۰۹ یک نفر جاوااسکریپت را از مرورگر بیرون کشید و اسمش را گذاشت 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، مدیریت خطا و نوشتن کدی می‌رویم که شش ماه بعد هم خوانده شود.

دیدگاه شما

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *