جاوااسکریپت۱۲ درس رایگان

آموزش جاوااسکریپت از صفر تا حرفه‌ای، با تمرین در مرورگر

در این دوره خود زبان جاوااسکریپت را یاد می‌گیرید، از مقدار و متغیر تا کلوژر، پروتوتایپ و async/await. کد هر تمرین در Node اجرا می‌شود و همان لحظه بررسی می‌شود.

  • بدون نصب Node یا ویرایشگر
  • async/await و حلقهٔ رویداد با جزئیات
  • درس‌های اول رایگان است
ببینید چه می‌سازید
درس
۲۲۴
تمرین
۱۸۷
ساعت آموزش
۴۵
پایان دوره
گواهی
نمونه: ترتیب حلقهٔ رویداد
order.jsترتیب حلقهٔ رویداد
// حدس بزنید این خط‌ها به چه ترتیبی چاپ می‌شوند
console.log("A  sync");
 
setTimeout(() => console.log("B  setTimeout 0"), 0);
 
Promise.resolve().then(() => console.log("C  promise.then"));
 
(async () => {
  console.log("D  async function body");
  await null;
  console.log("E  after await");
})();
 
queueMicrotask(() => console.log("F  queueMicrotask"));
 
console.log("G  sync end");
خروجی
A  sync
D  async function body
G  sync end
C  promise.then
E  after await
F  queueMicrotask
B  setTimeout 0

هفت خط به ترتیبی چاپ می‌شوند که با ترتیب نوشتنشان فرق دارد. اول کد همگام، بعد microtaskها و در آخر setTimeout. نمونه‌های دیگر

آنچه یاد می‌گیرید

در این دوره چه چیزهایی یاد می‌گیرید

بخش‌های دشوار زبان، مثل کلوژر، this، پروتوتایپ و async، بیشترین درس‌ها را دارند.

  1. فصل ۱ و ۲ و ۳ و ۴

    مقدار، متغیر و تبدیل نوع

    هشت نوع داده، let و const و عملگرها را یاد می‌گیرید و می‌فهمید جاوااسکریپت کجا نوع‌ها را بی‌صدا تبدیل می‌کند و چرا === امن‌تر از == است.

  2. فصل ۵ و ۶

    رشته و عدد

    با متدهای رشته و template literal متن می‌سازید و دقت عددهای اعشاری، Math و BigInt را یاد می‌گیرید.

  3. فصل ۷ و ۸

    کنترل جریان و تابع

    شرط، switch و انواع حلقه را می‌نویسید. تابع، callback و بازگشت را یاد می‌گیرید و تابع خالص را از تابعی که اثر جانبی دارد جدا می‌کنید.

  4. فصل ۹ و ۱۰

    اسکوپ، کلوژر و سینتکس مدرن

    hoisting و TDZ را می‌شناسید، با کلوژر حالت خصوصی می‌سازید و arrow function، rest، spread و destructuring را به کار می‌برید.

  5. فصل ۱۱ و ۱۲

    آرایه و آبجکت

    map، filter، reduce، sort و find را روی داده به کار می‌برید و با optional chaining، کلیدهای محاسبه‌شده و ابزارهای Object کار می‌کنید.

  6. فصل ۱۳ و ۱۴ و ۱۵

    this، پروتوتایپ و کلاس

    چهار قانون this و call، apply و bind را یاد می‌گیرید، زنجیرهٔ پروتوتایپ را دنبال می‌کنید و کلاس با وراثت، static، get و set و فیلد خصوصی می‌نویسید.

  7. فصل ۱۶ و ۱۷ و ۱۸

    خطا، generator و کالکشن‌ها

    خطای سفارشی تعریف می‌کنید، با generator داده را فقط وقتی لازم است تولید می‌کنید و Map، Set و WeakMap را به کار می‌برید.

  8. فصل ۱۹ و ۲۰ و ۲۱

    regex، JSON و برنامه‌نویسی تابعی

    با عبارت باقاعده متن را جست‌وجو و جایگزین می‌کنید، JSON می‌خوانید و می‌نویسید و با pipe، compose و currying کد تابعی می‌نویسید.

  9. فصل ۲۲ و ۲۳

    Promise، async/await و حلقهٔ رویداد

    از callback به Promise و async/await می‌رسید، Promise.all و allSettled را به کار می‌برید و ترتیب اجرای کد ناهمگام را پیش‌بینی می‌کنید.

  10. فصل ۲۴ و ۲۵ و ۲۶

    ماژول و دو پروژهٔ پایانی

    با CommonJS برنامهٔ چندفایلی می‌سازید و دو پروژهٔ کنسولی می‌نویسید: یک موتور تحلیل داده و یک صف کار ناهمگام با اولویت و تلاش دوباره.

نمونه‌کد

نمونه‌هایی از برنامه‌هایی که می‌نویسید

این شش برنامه را برای همین صفحه نوشته‌ایم. هر کدام مهارت یکی از فصل‌ها را نشان می‌دهد و خروجی کنارش همان چیزی است که اجرای کد چاپ می‌کند.

روش کار

یک درس چطور پیش می‌رود

  1. ۱

    توضیح کوتاه را می‌خوانید

    هر درس یک مفهوم را با یک مثال کوتاه توضیح می‌دهد و یک کار مشخص از شما می‌خواهد.

  2. ۲

    کد را می‌نویسید و اجرا می‌کنید

    خروجی console.log همان لحظه زیر کد می‌آید.

  3. ۳

    جواب را بررسی می‌کنید

    دکمهٔ بررسی کد شما را با چند آزمون می‌سنجد. اگر جایی گیر کردید، راهنمای همان تمرین قدم‌به‌قدم کمکتان می‌کند.

سرفصل‌ها

سرفصل‌های دوره

۲۶ سرفصل، ۲۲۴ درس، ۱۸۷ تمرین

۱

شروع: مدلِ اجرا، مقدارها و انواع داده

۸ درس
۲

متغیرها: let و const (و var به‌عنوانِ میراث)

۶ درس
  • تعریف، مقداردهیِ اولیه و انتساب: let و constپیش‌نمایش رایگان
  • let یعنی پیوندِ قابلِ تغییر: شمارنده و جابه‌جاییپیش‌نمایش رایگانتمرین
  • const برابرِ ثابت‌بودنِ مقدار نیست: پیوند در برابر مقدارپیش‌نمایش رایگانتمرین
  • اسکوپِ بلوکی: متغیرِ داخلِ { } بیرون دیده نمی‌شودپیش‌نمایش رایگانتمرین
  • var به‌عنوانِ میراث: چرا دیگر سراغش نمی‌رویم
  • کدِ آماده: ساختنِ یک شیءِ تنظیمات با const و letتمرین
۳

عملگرها و عبارت‌ها

۷ درس
  • عبارت چیست و عملگرها چه می‌کنند
  • عملگرهای ریاضی، یکانی و افزایش/کاهشتمرین
  • مقایسه و عملگرِ سه‌تایی ?:تمرین
  • منطقی‌ها و کوتاه‌بست: && و || مقدار برمی‌گردانندتمرین
  • ?? و زنجیره‌ی ?. برای مقدارِ پیش‌فرضِ امنتمرین
  • عملگرهای انتسابِ منطقی: ||= &&= ??=تمرین
  • تورِ آماده: تقدم، وابستگی و + دوگانهتمرین
۴

★ تبدیل و coercion نوع‌ها (== در برابر ===)

۸ درس
  • تبدیلِ نوع: صریح در برابر ضمنی
  • تبدیلِ صریح: Number، String، Boolean و اصطلاحِ !! و +تمرین
  • parseInt و parseFloat: عادتِ رادیکس و سورپرایزهاتمرین
  • تبدیلِ ضمنی: + رشته‌ای در برابر - * / عددی
  • truthy و falsy: هشت مقدارِ falsyتمرین
  • == در برابر ===: دامِ‌های کلاسیکتمرین
  • دامِ NaN: Number.isNaN در برابر isNaN و Object.isتمرین
  • تورِ کاملِ coercion: راهنمای میدانیِ دامِ‌هاتمرین
۵

رشته‌ها و template literal

۹ درس
  • رشته‌ها: ساخت، تغییرناپذیری، طول و اندیس
  • برش رشته: slice و دسترسی با atتمرین
  • جست‌وجو در رشته: includes و indexOf و startsWith/endsWithتمرین
  • صیقل دادن متن: trim، toUpperCase/toLowerCase، padStart، repeatتمرین
  • جایگزینی و تکه‌تکه کردن: replace/replaceAll و split/joinتمرین
  • template literal: درون‌ریزی، چندخطی و expressionتمرین
  • tagged template، String.raw و مبانیِ یونیکد
  • کار با کاراکترها: charCodeAt و fromCharCode و شمارشِ درستتمرین
  • نمایش: رمزِ rot13 با کارِ کاراکتریتمرین
۶

اعداد و Math

۷ درس
  • اعداد چطور ذخیره می‌شوند: IEEE-754 و دامِ دقت
  • گرد کردنِ امنِ پول با ‎.toFixed‎ (که رشته برمی‌گرداند)تمرین
  • مقایسه‌ی امنِ اعشاری با Number.EPSILONتمرین
  • توابعِ Math: گرد کردن، قدرمطلق، توان، ریشه و قید (clamp)تمرین
  • ویژگی‌ها و متدهای Number و تبدیلِ مبنا با toString(radix)تمرین
  • BigInt: اعدادِ بزرگِ دقیق (پسوندِ n و عدم‌اختلاط با Number)تمرین
  • نمایش: مبناها، جداکننده‌ی رقمی، بیت‌ها و یک تاسِ قطعی (LCG)تمرین
۷

کنترلِ جریان و حلقه‌ها

۱۰ درس
  • تصمیم‌گیری: if/else، truthiness و guard clause
  • early return: اعتبارسنجی با guard clauseتمرین
  • ternary به‌عنوان عبارت (و کِی تو در تو نکنیم)تمرین
  • switch: case/break/default و fall-through عمدیتمرین
  • الگوی switch(true) برای بازه‌هاتمرین
  • while و do…while: تکرار تا برقراریِ شرطتمرین
  • for کلاسیک و حلقه‌های تو در توتمرین
  • for…of با entries() و دامِ for…inتمرین
  • break، continue و حلقه‌های برچسب‌دار (labeled)تمرین
  • نمایش: FizzBuzz و چه‌وقت سراغِ متدهای آرایه برویمتمرین
۸

تابع‌ها: مبانی

۱۰ درس
  • تابع چیست؟ تعریف، فراخوانی و سه شکلِ ساختن
  • پارامتر، آرگومان و returnتمرین
  • وقتی return نباشد: undefinedِ ضمنیتمرین
  • آبجکتِ arguments (میراث)تمرین
  • تابع‌ها مقدارند: callback را پاس بدهتمرین
  • تابعی که تابع می‌سازد (factory)تمرین
  • بازگشت (recursion): فاکتوریل و جمعِ تا nتمرین
  • بازگشتِ خروجی‌دار: شمارشِ معکوستمرین
  • تابعِ خالص در برابرِ دارای اثرِ جانبیتمرین
  • نمایش: IIFE و یک ماشین‌حساب با callbackتمرین
۹

★ اسکوپ، hoisting، TDZ و کلوژر

۱۰ درس
  • اسکوپِ لِکسیکال و زنجیره‌ی اسکوپ
  • زنجیره‌ی اسکوپ در عمل: تابع تو در توتمرین
  • hoisting و TDZ: چرا قبل از تعریف خطا می‌گیری
  • اثباتِ TDZ: گرفتنِ ReferenceErrorتمرین
  • اولین کلوژر: کارخانه‌ی شمارندهتمرین
  • وضعیتِ خصوصی با کلوژر: حساب بانکیتمرین
  • ★ باگِ کلاسیک: کلوژر داخلِ حلقه (var در برابر let)تمرین
  • رفعِ باگ پیش از let: ترفندِ IIFE
  • کاربردِ واقعی: memoization با کلوژرتمرین
  • تورِ کدِ آماده: الگوی ماژول، شناسه‌ساز و چاشنیِ partialتمرین
۱۰

سینتکسِ مدرنِ تابع و destructuring

۸ درس
  • تابعِ پیکانی (arrow): سینتکسِ کوتاه
  • بازگشتِ ضمنی با arrowتمرین
  • پارامترهای پیش‌فرض (default)تمرین
  • پارامترهای rest و spread در فراخوانیتمرین
  • spread برای آرایه‌ها و آبجکت‌ها (و کپیِ سطحی)تمرین
  • تجزیه‌ی آرایه (array destructuring)تمرین
  • تجزیه‌ی آبجکت: تغییرِ نام، پیش‌فرض و گاردِ ={}تمرین
  • همه‌ی سینتکسِ مدرن کنارِ همتمرین
۱۱

★ آرایه‌ها و جعبه‌ابزارِ متدها

۱۲ درس
  • آرایه از نزدیک: ساخت، اندیس، length و چاپِ قطعی
  • ساختنِ آرایه: Array.from، Array.of و Array.isArrayتمرین
  • دسترسی و at: اندیسِ منفی و lengthتمرین
  • افزودن و حذف: push/pop/shift/unshift و spliceتمرین
  • مرتب‌سازی با comparator و دامِ مرتب‌سازیِ پیش‌فرضتمرین
  • نسخه‌ی تغییرناپذیر: slice، concat و خانواده‌ی ES2023 (toSorted/toReversed/with)تمرین
  • map و filter: تبدیل و صافی‌کردنتمرین
  • آشنایی با reduce: انباشتگر، مقدارِ اولیه و reduceRight
  • reduce در عمل: جمع، بیشینه و جمعِ روان (running total)تمرین
  • reduce برای ساختنِ آبجکت: شمارش و گروه‌بندی (group-by)تمرین
  • جست‌وجو و وارسی: find/findLast، some/every، includesتمرین
  • نمایش: خطِ لوله‌ی داده — زنجیره‌ی map→filter→reduce، dedupe و آرایه‌ی دوبعدیتمرین
۱۲

آبجکت‌ها در عمق

۹ درس
  • ساختِ آبجکت: literal، شورتهند و کلیدهای محاسبه‌شده
  • شورتهند و کلیدِ محاسبه‌شده در عملتمرین
  • دسترسی: نقطه‌ای، براکتی و کلیدِ پویاتمرین
  • زنجیره‌ی اختیاری ?. و nullishِ ?? (الگوی cityOf)تمرین
  • افزودن، تغییر و حذف: عملگرِ in و deleteتمرین
  • پیمایش: Object.keys/values/entries و دامِ ترتیبِ کلیدِ عددیتمرین
  • کپی: assign، spreadِ کم‌عمق، structuredCloneِ عمیق و freezeتمرین
  • پلِ آبجکت↔آرایه: entries/fromEntries و الگوی invertتمرین
  • تورِ آماده: getter/setter، defineProperty و پلِ Object.createتمرین
۱۳

★ this و call / apply / bind

۹ درس
  • چهار قاعده‌ی this: مقدارش با «جای صدا زدن» تعیین می‌شود
  • پیوندِ ضمنی: this همان آبجکتِ پیش از نقطه استتمرین
  • پیوندِ صریح: call در برابر applyتمرین
  • bind: پیوندِ دائمی و آرایشِ جزئی (partial application)تمرین
  • گم‌شدنِ this: وقتی متد را از آبجکتش جدا می‌کنی
  • arrow و this لِکسیکال: حلقه‌ی کلوژر بسته می‌شودتمرین
  • ترمیمِ this در کال‌بکِ کلاس با bindتمرین
  • دست‌ساز: bind و call را خودت بسازتمرین
  • نمایش: چهار قاعده‌ی this کنار همتمرین
۱۴

★ پروتوتایپ و زنجیره‌ی آن

۹ درس
  • مدلِ پروتوتایپ: هر آبجکت یک پدر دارد
  • ساختنِ زنجیره با Object.create و lookupتمرین
  • خواندن و تغییرِ پروتوتایپ: getPrototypeOf و setPrototypeOfتمرین
  • شخصی یا ارثی؟ hasOwnProperty، Object.hasOwn و shadowingتمرین
  • تابع‌سازنده، خاصیتِ .prototype و کلیدواژه‌ی newتمرین
  • new واقعاً چه می‌کند؟ بازسازیِ چهار قدمِ آنتمرین
  • پیمایشِ زنجیره: instanceof و isPrototypeOfتمرین
  • ارث‌بریِ پروتوتایپی با دست (پیش از class)تمرین
  • تورِ کدِ آماده: زنجیره‌ی built-inها و چرا extend نکنیمتمرین
۱۵

★ کلاس‌ها و شیءگراییِ مدرن

۱۰ درس
  • از پروتوتایپ تا class: نگاهِ مدرن
  • اولین کلاس: constructor، متد و فیلدِ عمومیتمرین
  • وضعیتِ نمونه و JSON.stringifyتمرین
  • get و set: ویژگیِ محاسبه‌شدهتمرین
  • اعضای static: متد و فیلدِ متعلق به خودِ کلاستمرین
  • ارث‌بری: extends و superتمرین
  • کپسوله‌سازیِ واقعی با فیلدِ خصوصیِ #تمرین
  • تشخیصِ نوعِ شیء با #field in obj (brand check)تمرین
  • ترکیب در برابر ارث‌بری، mixinها و دامِ‌های کلاس
  • نمایش: یک کلاسِ کاملِ اصطلاحی (Stack)تمرین
۱۶

مدیریتِ خطا و خطاهای سفارشی

۸ درس
  • خطا چیست؟ آبجکتِ Error و زیرنوع‌های آن
  • اولین تله: try / catch و خواندنِ پیامِ خطاتمرین
  • تشخیصِ نوعِ خطا با e.constructor.nameتمرین
  • نگهبان و throw: اعتبارسنجیِ ورودیتمرین
  • finally و انتشارِ مجددِ خطا (rethrow)تمرین
  • خطاهای سفارشی: extends Error و nameتمرین
  • خطا یا نتیجه؟ الگوی بازگشتِ {ok, value/error}تمرین
  • نمایش: خطای ناهمگام با try/catch و await، و option به‌نامِ causeتمرین
۱۷

iterator، iterable و generator

۸ درس
  • پروتکلِ پیمایش: iterable و iterator
  • اولین iterator دستی: شیئی با next()تمرین
  • iterable سفارشی: شیءِ rangeتمرین
  • اولین generator: function* و yieldتمرین
  • دنباله‌های تنبل و بی‌نهایت (قطعی)تمرین
  • تفویض با yield*تمرین
  • ارتباطِ دوطرفه: next(value)تمرین
  • نمایش: خطِ لوله‌ی تنبل با generatorتمرین
۱۸

کالکشن‌ها: Map، Set و WeakMap

۸ درس
  • چرا Map و Set؟ کجا از آبجکتِ ساده بهتر‌اند
  • اولین Map: set / get / has / delete / sizeتمرین
  • کلیدهای هر نوع و ترتیبِ درج در Mapتمرین
  • Map از روی entries و تبدیل دوطرفه با آبجکتتمرین
  • Set: یکتایی و حذفِ تکراری از آرایهتمرین
  • جبرِ مجموعه‌ها: اجتماع، اشتراک و تفاضلتمرین
  • WeakMap و WeakSet: مرجعِ ضعیف، GC و دادهٔ خصوصی
  • نمایش: شمارشگرِ بسامد با Map و کَشِ LRUتمرین
۱۹

عبارت‌های باقاعده (Regular Expressions)

۹ درس
  • regex چیست؟ ساختِ الگو و فلگ‌ها
  • test و کلاس‌های کاراکتری: اعتبارسنجیِ رنگِ هگزتمرین
  • لنگرها، \b و کمیت‌سنج‌ها: اعتبارسنجیِ نامِ کاربریتمرین
  • گروه‌های capturing و نام‌دار با matchتمرین
  • استخراجِ همه‌ی تطبیق‌ها با matchAll و فلگِ gتمرین
  • جایگزینی با replace: $1، گروهِ نام‌دار و تابعِ replacerتمرین
  • الگوهای کاربردی: نرمال‌سازیِ فاصله، split و slugifyتمرین
  • اعتبارسنجیِ ایمیل و lookahead (پیشرفته)تمرین
  • موتورِ قالبِ {{key}} — کدِ آماده برای اجراتمرین
۲۰

JSON

۶ درس
  • JSON چیست؟ سریالایز و بازخوانی داده
  • JSON.stringify: خروجیِ قطعی از کالکشن‌هاتمرین
  • stringify چه چیزهایی را می‌اندازد + replacer و فاصله‌گذاریتمرین
  • JSON.parse و reviver: رشته به مقدارتمرین
  • رفت‌وبرگشت برای کپیِ عمیق و قلابِ toJSONتمرین
  • نمایش: اعتبارسنجِ JSON با try/catch و تطبیقِ schemaتمرین
۲۱

برنامه‌نویسیِ تابعی (Functional JS)

۸ درس
  • سبکِ تابعی: خلوص و اثرِ جانبی
  • تابعِ خالص: بدونِ تغییرِ ورودیتمرین
  • ناوردایی: کپیِ به‌روزشده و قفل‌کردنتمرین
  • ترکیب‌گرها: once، negate، identity، constantتمرین
  • ترکیبِ تابع‌ها: pipe و composeتمرین
  • currying و کاربردِ جزئی (partial)تمرین
  • بازگشت + memoization با کشتمرین
  • نمایش: خطِ لوله‌ی توصیفی و جعبه‌ی Maybeتمرین
۲۲

★ async I: از callback تا Promise

۱۱ درس
  • چرا ناهمگام؟ مدلِ ذهنیِ sync در برابر async
  • کال‌بک و ترتیبِ اجرا با setTimeoutتمرین
  • قراردادِ error-first و جهنمِ کال‌بک
  • اولین Promise: new Promise با resolve و rejectتمرین
  • زنجیره‌سازی با then / catch / finallyتمرین
  • بازگشتِ مقدار از then و صاف‌شدنِ Promiseِ تو در توتمرین
  • انتشارِ خطا در زنجیره و ادامه پس از catchتمرین
  • Promise.all — نتایجِ مرتب مستقل از زمانِ پایانتمرین
  • Promise.allSettled — هرگز reject نمی‌شودتمرین
  • Promise.race و Promise.any — قطعی‌شدهتمرین
  • نمایش: زنجیره‌ی کاملِ Promise با ترکیب‌گرهاتمرین
۲۳

★ async II: async/await و حلقه‌ی رویداد

۱۱ درس
  • async/await: همان Promise با لباسِ تازه
  • اولین تابعِ async و باز کردنِ مقدار با awaitتمرین
  • ترجمه‌ی then-chain به async/awaitتمرین
  • مدیریتِ خطا با try/catch/finally و awaitتمرین
  • ترتیبی در برابر موازی: await در حلقه یا Promise.allتمرین
  • ★ حلقه‌ی رویداد: استک، صفِ microtask و صفِ macrotask
  • ★ ترتیب را پیش‌بینی کن: همگام → microtask → macrotaskتمرین
  • promisify: از callback به Promiseتمرین
  • تلاشِ دوباره: retry با شمارنده (نه تصادف)تمرین
  • for await…of روی async generatorتمرین
  • تورِ کدِ آماده: زمان‌بندِ قطعی و top-level awaitتمرین
۲۴

ماژول‌ها و دامِ‌های رایجِ زبان

۹ درس
  • ماژول چیست؟ ESM در برابر CommonJS
  • اولین ماژول: module.exports و requireتمرین
  • چند تابع در یک ماژول: exports و وارد کردنِ گزینشیتمرین
  • کش‌شدنِ ماژول‌ها: بدنه فقط یک‌بار اجرا می‌شودتمرین
  • دامِ کلاسیکِ ۱: == در برابر === و انتخابِ مقدارِ پیش‌فرضتمرین
  • دامِ کلاسیکِ ۲: var در حلقه و کلوژر (راهِ حلِ let)تمرین
  • دامِ کلاسیکِ ۳: جهش، آلیاسِ مرجع و کپیِ سطحی/عمیقتمرین
  • دامِ کلاسیکِ ۴: typeof null، تشخیصِ آرایه و sort بدونِ comparatorتمرین
  • نمایش: یک برنامه‌ی کوچکِ چندفایلیِ تمیز (CommonJS)تمرین
۲۵

پروژه‌ی پایانی ۱: موتورِ داده و تحلیل

۷ درس
  • نقشه‌ی پروژه: موتورِ تحلیلِ CSV چه می‌کند؟
  • گامِ اول: tokenizer — رشته‌ی CSV را به ردیف و سلول بشکنتمرین
  • گامِ دوم: parser — جدول را به رکوردهای آبجکتی با نوع‌دهیِ خودکارتمرین
  • گامِ سوم: pipeline — توابعِ خالصِ groupBy و aggregate و multiKeySortتمرین
  • گامِ چهارم: کلاسِ Dataset — رابطِ زنجیره‌ایِ تحلیلتمرین
  • گامِ پنجم (نهایی): چندفایلیِ CommonJS و گزارشِ کامل با main.jsتمرین
  • تورِ کدِ آماده: موتورِ تحلیل از نگاهِ بالاتمرین
۲۶

پروژه‌ی پایانی ۲: صفِ کارِ ناهمگام

۷ درس
  • نقشه‌ی پروژه: چرا «ساعتِ منطقی» قلبِ یک async قطعی است
  • ساعتِ منطقی: یک Clock قطعی به‌جای زمانِ واقعیتمرین
  • صفِ کار بر پایه‌ی اولویت (با شکستِ گرهِ قطعی)تمرین
  • وابستگی‌ها: ترتیب‌بندیِ توپولوژیک و کشفِ حلقهتمرین
  • تلاشِ مجدد و سقفِ هم‌زمانی (با Promise قطعی)تمرین
  • یکپارچه‌سازی: زمان‌بند با generator برای جریانِ کارتمرین
  • اجرای نهایی: یک سناریوی کامل با شکست، تلاشِ مجدد و گزارشِ پایانیتمرین
شروع دوره

از همین امروز شروع کنید

درس‌های اول رایگان است و برای شروع پرداختی لازم نیست. هر وقت خواستید ادامه دهید، همین دوره را بخرید یا با اشتراک پرو همهٔ دوره‌ها را باز کنید.

این دوره شامل:
  • ۲۲۴ درس تعاملی
  • ۱۸۷ تمرین عملی
  • ۴۵ ساعت محتوای آموزشی
  • اجرای کد در مرورگر، بدون نصب
  • گواهی پایان دوره
  • دسترسی مادام‌العمر

نمونه‌ها را دوباره ببینید

رایگانبرای شروع

۱۲ درس ابتدایی رایگان است. برای ادامه، اشتراک بگیرید یا دوره را بخرید.

بدون نیاز به پرداخت مبلغی برای شروع

برای چه کسی

این دوره برای چه کسی است

  • تازه‌کار

    اگر برنامه‌نویسی را با جاوااسکریپت شروع می‌کنید. دوره از اولین console.log جلو می‌رود.

  • برنامه‌نویس وب

    اگر جاوااسکریپت را تکه‌تکه یاد گرفته‌اید و می‌خواهید کلوژر، this، پروتوتایپ و async را درست بفهمید.

  • آماده شدن برای مصاحبه

    پرسش‌های رایج مصاحبه، مثل ترتیب حلقهٔ رویداد یا رفتار this، در تمرین‌های دوره پیش‌بینی و اجرا می‌شوند.

پیش‌نیاز: یک رایانه و یک مرورگر. لازم نیست از قبل جاوااسکریپت بدانید.

بعد از این دوره

ابزار رایگان

عبارت باقاعده را همین حالا امتحان کنید

در تستر رجکس، الگو را با پرچم‌هایش می‌نویسید و تطبیق‌ها همان لحظه رنگی می‌شوند. همه‌چیز در مرورگر و با موتور regex خود جاوااسکریپت اجرا می‌شود.

تستر رجکس آنلاین
پرسش‌ها

پرسش‌های پرتکرار

آموزش جاوااسکریپت را از کجا شروع کنم؟
از فصل اول همین دوره. درس اول نشان می‌دهد Node کد را چطور اجرا می‌کند و از درس دوم خودتان کد می‌نویسید.
کار با صفحهٔ وب و DOM هم در این دوره هست؟
نه. این دوره خود زبان را آموزش می‌دهد و تمرین‌ها در کنسول اجرا می‌شوند. document، window و رویدادهای صفحه در آن نیستند، اما همهٔ آن‌ها روی همین زبان کار می‌کنند.
برای این دوره باید Node.js را نصب کنم؟
نه. کد را در مرورگر می‌نویسید و روی سرور با Node 20 اجرا می‌شود. اگر بعداً Node را روی رایانه نصب کنید، همین کدها آنجا هم بدون تغییر اجرا می‌شوند.
جاوااسکریپت یاد بگیرم یا پایتون؟
اگر می‌خواهید وب بسازید، جاوااسکریپت زبان مرورگر است و جایگزینی ندارد. اگر هدفتان هنوز روشن نیست یا به داده و خودکارسازی علاقه دارید، پایتون شروع ساده‌تری است. مفهوم‌های پایه در هر دو یکی است و زبان دوم را سریع‌تر یاد می‌گیرید.
async/await در این دوره چقدر کار شده است؟
دو فصل به آن اختصاص دارد: یکی از callback تا Promise و ترکیب‌گرهایش، و دیگری async/await، مدیریت خطای ناهمگام و ترتیب اجرای microtask و macrotask. پروژهٔ دوم دوره هم یک صف کار ناهمگام است.
چند درس این دوره رایگان است؟
درس‌های ابتدایی دوره رایگان است و برای شروع پرداختی لازم نیست. تعداد دقیق آن‌ها کنار دکمهٔ شروع نوشته شده است.
در پایان دوره گواهی می‌گیرم؟
بله. وقتی همهٔ درس‌ها را تمام کنید، گواهی پایان دوره با یک شمارهٔ استعلام می‌گیرید که هر کسی می‌تواند درستی آن را بررسی کند.

همین امروز شروع کنید

اولین خط جاوااسکریپتتان را همین امروز در مرورگر بنویسید. شروع رایگان است و در کمتر از دو دقیقه وارد محیط یادگیری می‌شوید.

آموزش جاوااسکریپت از صفر تا حرفه‌ای — دینا کد