دوره آموزش JavaScript
جاوااسکریپت یک زبان برنامهنویسی دینامیک و چندمنظوره است که در حوزههای مختلفی مانند مهندسی نرمافزار،
برنامهنویسی مبتنی بر هوش مصنوعی، رباتیک و تولید اپلیکیشنهای وب، دسکتاپ و موبایل قابل استفاده است و در
سالهای اخیر محبوبیت روزافزونی را تجربه کرده است. زبان جاوااسکریپت اصطلاحاً multi-paradigm است و از
پارادایمها یا سبکهای برنامهنویسی مختلفی مانند برنامهنویسی شیگرا (OOP)، برنامهنویسی تابعی (Functional)،
برنامهنویسی رویهای (procedural) و برنامهنویسی رویداد محور (event-driven) پشتیبانی میکند.
جاوااسکریپت را بیشتر به عنوان یک زبان اسکریپتنویسی برای صفحات وب میشناسند و این تفکری است که از فلسفهی
ابتدایی معرفی این زبان نشأت میگیرد اما با این وجود، در سالهای اخیر، این زبان دستخوش تغییرات زیادی شده و
علاوه بر مرورگرهای وب، محیطهای دیگری نیز قادر به میزبانی از این زبان هستند که مهمترین آنها Node.js است. در
حقیقت، هدف و فلسفهی ابتدایی
جاوااسکریپت این بود که به عنوان یک زبان اسکریپتنویسی سمت کاربر برای ایجاد پویایی در صفحات وب به کار گرفته شود
و از اینرو برای سالها مرورگرهای وب تنها محیطهای میزبان جاوااسکریپت بودند. اما این شرایط تغییر کرده و
جاوااسکریپتِ امروزی در محیطهای مختلفی قابل اجراست و برنامهنویسان و توسعهدهندگان با اهداف متفاوتی از این
زبان استفاده میکنند.
با توجه به اینکه نسخههای مختلف مرورگرهای وب برای پلتفرمهای دسکتاپ، تبلت و موبایل همگی به یک موتور
جاوااسکریپت مجهز هستند، جاوااسکریپت بیش از هر زبان دیگری در طول تاریخ منتشر (deploy) شده است. از سال 2010 و با
معرفی Node.js جاوااسکریپت به دنیای خارج از مرورگرها نیز راه یافت و به عنوان مثال، با نصب Node روی سرور، امکان
برنامهنویسی وب در سمت سرور با استفاده از جاوااسکریپت وجود دارد. موفقیت خیرهکنندهی Node باعث شد تا
جاوااسکریپت به زبانی تبدیل شود که بیش از هر زبان دیگری توسط برنامهنویسان و توسعهدهندگان نرمافزار استفاده
میشود.
اگر تجربهای در برنامهنویسی دارید، بد نیست بدانید که جاوااسکریپت یک زبان سطح بالا، دینامیک و تفسیری (و مجهز
به کامپایلر JIT) است که از سبکهای برنامهنویسی مختلف به خوبی پشتیبانی میکند. این زبان، بسیاری از ویژگیهای
گرامری خود را از زبانهای کمنامونشان Scheme و Self اقتباس کرده است. برای نمونه، جاوااسکریپت به تقلید از
زبان Scheme دارای توابع first-class است (هر زبان برنامهنویسی که توابع آن مانند متغیرها رفتار میکنند و برای
مثال، میتوان آنها را به عنوان آرگومان به توابع دیگر پاس کرد و یا آنها را به عنوان خروجی توابع تعیین کرد و یا
آنها را به عنوان مقدار به متغیرها تخصیص داد، یک زبان دارای توابع first-class نامیده میشود) و یا مانند زبان
Self یک زبان مبتنی بر پروتوتایپ (prototype-based) است که سبکی از برنامهنویسی شیگرا را ارائه میدهد که در آن
کلاسها به طور صریح تعریف نمیشوند و میتوان یک شیء را بدون اینکه کلاسی برایش تعریف شده باشد، ایجاد کرد.
بنابراین، مفاهیمی مانند وراثت (inheritance) در جاوااسکریپت به شکل متفاوتی نسبت به مدل سنتی مبتنی بر کلاس
پیادهسازی میشوند. البته در نسخههای اخیر جاوااسکریپت، از برنامهنویسی مبتنی بر کلاسها نیز پشتیبانی میشود و
این یکی از دلایل اصلی رشد و گسترش میزان استفاده از این زبان است.
بخش زیادی از قدرت جاوااسکریپت، مرهون APIهای نوشته شده برای این زبان است که یا در محیطهای میزبان مانند
مرورگرها و Node پیادهسازی شدهاند و بخشی از کتابخانهی استاندارد جاوااسکریپت محسوب میشوند و یا توسط اشخاص و
شرکتهای ثالث ایجاد شده و به عنوان کتابخانههای خارجی (external) در دسترس هستند. علاوه بر اینها، فریمورکهای
متعددی وجود دارند که کار برنامهنویسان جاوااسکریپت را سادهتر میکنند. برای نمونه، فیسبوک یک فریمورک
جاوااسکریپتی را برای استفادهی داخلی خود طراحی کرد و بعداً این فریمورک را با نام React به صورت متنباز منتشر
کرد. گوگل نیز با طی یک روند مشابه، فریمورک Angular را منتشر کرد.
گر به تازگی قدم در مسیر یادگیری جاوااسکریپت گذاشتهاید و یا سابقهی کار با این زبان را دارید، در هر دو حالت،
این آموزش میتواند به شما کمک کند تا سطح بالایی از مهارت در کار با این زبان را بدست آورید و به معنای واقعی
کلمه، در کار با این زبان به درجهی استادی برسید. آنچه در این آموزش پوشش داده شده، هستهی زبان برنامهنویسی
جاوااسکریپت و چند API جاوااسکریپتی مهم و کاربردی است که توسط مرورگرهای وب پیادهسازی شدهاند. هدف ما
این است که آموزش جامع و دقیقی از جاوااسکریپت را به همراه یک معرفی کامل و عمیق از چند API مهم که در دسترس
برنامههای جاوااسکریپت قرار دارند، ارائه دهیم. بنابراین، حجم بالای این آموزش، کاملاً طبیعی و قابل انتظار است.
با این حال، قطعاً در ازای زمانی که برای مطالعهی دقیق این آموزش صرف میکنید، نتیجهی خوبی دریافت خواهید کرد.