با یا اشتباه نشود. (به : ، ) با نوعی است که با ویژگی‌های ارائه شده در مشخصات مطابق می‌باشد. جاوااسکریپت نوعی زبان ، ، و است. جاوااسکریپت نحو دارد، نوع دهی آن است، نوع یی اش است، و دارای می‌باشد. 
 در کنار و ، جاوااسکریپت یکی از فن‌آوری‌های هسته‌ای است. 
 علیرغم اشتباه عمومی، زبان جاوااسکریپت با زبان ارتباطی ندارد، دلیل این نام گذاری محبوبیت زبان جاوا در هنگام تولد جاوااسکریپت بود؛ اگر چه ساختار این زبان به (++C) و (C#) شباهت دارد که این امر برای یادگیری آسان در نظر گرفته شده‌است. از همین رو دستورهای متداول مانند , , ,"while" و… در این زبان هم یافت می‌گردند. 
این زبان می‌تواند هم به صورت و هم به صورت مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن و پویا به اشیاء خالی ساخته می‌شوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی می‌تواند به عنوان نمونه‌ای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد. 
 
به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم، مناسب است. کاربرد گسترده این زبان در سایت‌ها و صفحات اینترنتی بوده و به کمک این زبان می‌توان به اشیاء داخل صفحات اچ‌تی‌ام‌ال دسترسی پیدا کرد و آن‌ها را تغییر داد. به همین علت برای در سمت کاربر، از این زبان استفاده می‌شود.
 را در ابتدا شخصی به نام در شرکت با نام Mocha طراحی نمود. این نام بعداً به LiveScript و نهایتاً به جاوااسکریپت تغییر یافت. اولین نمونه‌های جاوااسکریپت در اواخر دهه ۱۹۹۰ برای مرورگر وب Netscape Navigator ایجاد شد.
 اولین نسخه جاوااسکریپت در نسخه B32.0 این مرورگر در دسامبر 1995 معرفی و عرضه شد. این نامگذاری منجر به سردرگمی های زیادی شده و این ابهام را ایجاد میکند که جاوااسکریپت با جاوا مرتبط است در حالی که اینطور نیست.
 عده ی زیادی این کار را ترفند تجاری برای بدست آوردن بخشی از بازار جاوا که در آن موقع زبان جدید مطرح برای برنامه نویسی تحت وب بود میدانند.
 javaScript به صورت <<جاواسکریپت>> خوانده میشود، ولی در فارسی به صورت <<جاوااسکریپت>> ترجمه میشود و اگر به صورت <<جاوااسکریپت>> ترجمه شود اشتباه است چون دوکلمه جدا ازهم نیست و اگر به صورت دو کلمه جدا نوشته شود خطاهای نگارشی ایجاد میشود، به طور مثال ممکن است کلمه جاوا در انتهای خط و کلمه اسکریپت در ابتدای خط بعدی نوشته شود.
 علیرغم اشتباه عمومی، زبان جاوااسکریپت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس(++C) و جاوا شباهت دارد که این امر برای یادگیری آسان در نظر گرفته شده است.
 در آن زمان، صفحات وب ایستا بودند و تعامل کمی با کاربر، فراتر از کلیک کردن روی پیوندها و بارگیری صفحات جدید، ایجاد می‌کردند. برای اولین بار، جاوااسکریپت ، محتوای تطبیقی و اعتبار سنجی فرم را در صفحه فعال کرده‌است.
 برای سالهای طولانی، جاوااسکریپت فقط در تعداد محدودی از مرورگرها کار می‌کرد. ، بزرگترین پایگاه ، خیلی زود از جاوااسکریپت پشتیبانی نکرد. در عوض، مایکروسافت اسکریپت اختصاصی سمت مشتری خود را با نام JScript ایجاد کرد. در روزهای ابتدایی توسعهٔ وب، برنامه‌نویسان که مایل به ایجاد وب‌سایت‌های پویا بودند، اغلب مجبور به انتخاب یک خانواده مرورگر از خانوادهٔ دیگر شدند. این کمتر از ایده ‌آل بود زیرا را کمتر در دسترس جهانی قرار می‌داد.
 جاوااسکریپت تا سال ۱۹۹۹ استاندارد نشده و به‌طور گسترده هم پذیرفته نشد. حتی پس از استانداردسازی، سازگاری مرورگر برای بیش از یک دهه همچنان مسئله ساز بود.
 به دلیل موفقیت عمدهٔ جاوااسکریپت در نقش (Client Side Scripting Language) برای صفحات وب، یک نسخه سازگار از این زبان را ایجاد کرد و به علت مشکلات حقوقی آن را نامید. این زبان در نسخه ۳٫۰ از مرورگر و در اوت ۱۹۹۶ داده شد. تفاوت‌های این دو زبان به حدی جزئی است که اغلب و جاوااسکریپت به جای هم به کار می‌روند. هرچند که چند ده دلیل برای تفاوت با استاندارد اکما مطرح می‌کند.
 جاوااسکریپت را به سازمان برای استانداردسازی ارسال کرده‌است و نتیجه نسخهٔ استاندارد شده‌ای به نام است. 
 جاوااسکریپت به یکی از زبان‌های برنامه‌نویسی پرطرفدار در تبدیل شده‌است. هر چند ابتدا بسیاری از برنامه‌نویسان حرفه‌ای زبان را کم ارزش تلقی می‌کردند چون مخاطبین آن نویسندگان صفحات وب و آماتورهای این چنینی بودند. ظهور بار دیگر جاوااسکریپت را در معرض توجه قرار داد و برنامه‌نویسان حرفه‌ای بیشتری را به خود جذب نمود. نتیجه ازدیاد فریمورک و کتابخانه‌های جامعی در این زمینه، بهبود شیوه‌های رایج برنامه‌نویسی در جاوااسکریپت و افزایش کاربرد جاوااسکریپت خارج از وب است. 
 این زبان برنامه‌نویسی دارای مرسومی است که بنا به گفته‌های شرکت سازنده در زیر قید شده‌اند.
 شامل ۶۴ کلمهٔ کلیدی است.
 فریم‌ورک‌ها و کتابخانه‌های زیادی برای این زبان توسعه یافته است، مانند کتابخانه‌های ، ، ، و فریم‌ورک .
 تعداد فریمورک ها و کتابخانه های این زبان تا سال ۲۰۲۲ میلادی حدود ۲,۰۰۰,۰۰۰ عدد اعلام شده است. 
 جاوااسکریپت از تمامی نحو ساختاری پشتیبانی می‌کند. مانند گزاره (if و switch و حلقه‌های while و…) یک مورد استثناء تعیین حوزهٔ متغیرهاست: تعریف حوزه در حد block در جاوااسکریپت وجود ندارد. هر چند جاوااسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکان‌پذیر می‌سازد. مانند زبان C در جاوااسکریپت بین عبارت و گزاره تفاوت وجود دارد.
 
مانند اکثر زبان‌های نویسه‌ای تایپ به مقدارها منسوب می‌گردد و نه به متغیرها. برای مثال متغیر x ممکن است به یک عدد شود، و بعداً به یک رشته. جاوااسکریپت برای تعیین تایپ شی راه‌های مختلفی از جمله تایپ دهی اردکی ( ) را دارد (در ES6 از const استفاده می‌شود). 
 
زبان جاوااسکریپت از نظر به‌شمار می‌آید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود (عدد را با رشته جمع کرده‌است).
 
جاوااسکریپت تقریباً تماماً بر اساس اشیاء است. اشیاء، آرایه‌های انتسابی به همراه یک «ساختار شماتیک» هستند. نام ویژگی اشیاء، کلیدهای آرایه انتسابی هستند و در واقع با هم ارز هستند و شیوه نگارش با نقطه صرفاً یک سهولت نحوی است. ویژگی‌ها و مقدارهایشان در زمان اجرا قابلیت تغییر اضافه و حذف دارند. همچنین می‌توان روی یک شی با ساختار پیمایش کرد.
 
جاوااسکریپت یک تابع دارد که قادر است گزاره‌های تولید شده در یک رشته در زمان اجرا را، اجرا کند.
 
توابع موجوداتی « » محسوب می‌شوند، یعنی خود یک هستند بنابراین می‌توانند داشته باشند، در تابع‌ها داده شوند و مانند هر شی دیگری با آن‌ها رفتار شود
 
 (توابع تعریف شده داخل یک تابع دیگر) هر بار که تابع بیرونی فرا خوانده شود، ایجاد می‌شوند و متغیرهای توابع بیرونی تا زمانی که تابع داخلی وجود داشته باشد، وجود خواهند داشت، حتی پس از اتمام آن فراخوانی از تابع بیرونی. (مثال: اگر تابع داخلی به عنوان تابع باشد، هنوز به متغیرهای تابع بیرونی دسترسی دارد) – این مکانیزم گرفتن در جاوااسکریپت است.
 
جاوااسکریپت به جای رده‌ها برای تعریف ویژگی‌های اشیاء، که شامل و است از «ساختار شماتیک» استفاده می‌کند ( ). امکان شبیه‌سازی بسیاری از امکانات -محور با ساختارهای شماتیک جاوااسکریپت امکان‌پذیر است.
 برای توابع علاوه بر نقش عادی، به عنوان ‌ اشیاء هم عمل می‌کنند. آوردن یک new قبل فراخوانی تابع، آن را با کلمهٔ کلیدی this وابسته سازی شده به شی جدید اجرا می‌کند. ویژگی prototype از تابع مورد نظر، ساختار شماتیک شی جدید را مشخص می‌کند.
 
بر خلاف بیشتر زبان‌های تفاوتی میان تعریف تابع و وجود ندارد. بلکه تفاوت در زمان فراخوانی تابع است، زمانی که یک تابع به عنوان متد یک شی فراخوانده می‌شود کلمهٔ کلیدی this محلی آن تابع به شی مورد نظر وابسته سازی می‌شود.
 جاوااسکریپت برای تأمین اشیاء و متدها که با آن‌ها تعامل کند به یک محیط اجرایی (مانند وب) نیاز دارد تا بتواند به این ترتیب با دنیای خارج ارتباط برقرار کند. همچنین برای دسترسی به سایر نویسه‌ها (include) هم به این محیط نیازمند است (مانند تگ <script>در ). (البته این یک ویژگی زبانی نیست اما در عمل اغلب این‌طور پیاده‌سازی شده‌است)
 تعداد متغیر پارامتر (variadic):
تعداد نامعینی پارامتر را می‌توان به یک تابع ارسال نمود. تابع می‌تواند هم از طریق پارامترهای رسمی و هم از طریق شی محلی به آن‌ها دسترسی داشته باشد.
 مانند بسیاری از زبان‌های نویسه‌ای آرایه‌ها و اشیاء (که در زبان‌های دیگر همان آرایه‌های انتسابی هستند) را می‌توان با یک نحو موجز ایجاد و توصیف نمود. در واقع این شیوهٔ نگارش پایهٔ قالب داده‌ای هم هست.
 جاوااسکریپت به شیوه‌ای مشابه زبان از پشتیبانی می‌کند که نحوی قدرتمند و موجز را به شکلی فراتر از توابع پیش ساخته برای کار با رشته‌ها، فراهم می‌کند.
 انواع زیر جزو انواع داده‌های قابل دسترس در زبان جاوااسکریپت است. در استاندارد اکما انواع دیگری هم تعریف شده که صرفاً داخلی است و برای پیاده‌سازی است. 
 این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشده‌است
 نوع تهی هم فقط یک مقدار دارد با نام null
 نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را می‌پذیرد.
 در بر گیرندهٔ تمام رشته‌های متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیس‌های نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.
 زمانی که رشته حاوی متن واقعی باشد هر عنصر به عنوان یک واحد UTF-16 در نظر گرفته می‌شود (مستقل از این که شیوهٔ واقعی نگهداری رشته چه باشد). تمام عملیات بر روی رشته‌ها آن‌ها را به عنوان اعداد صحیح بدون علامت در نظر می‌گیرند و تضمین‌کنندهٔ تولید رشته به حالت normalize شده نیست و تضمین‌های خاص زمانی هم ندارد. علت این تصمیم‌گیری سادگی در پیاده‌سازی ذکر شده‌است.
 نوع عدد در جاوااسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت).
 شی در جاوااسکریپت یک مجموعه بدون ترتیب از ویژگی‌ها است. هر ویژگی می‌تواند داخلی، فقط-خواندنی، غیرقابل حذف، و غیرقابل پیمایش باشد. (یا ترکیبی از این‌ها یا هیچ‌کدام)
 این زبان دارای تبدیلات خودکار بین این انواع داده‌ای است.
 زمانی که بخواهد یک if را ارزیابی کند یا از عملگرهای منطقی و و استفاده شود، تبدیل به نوع دودویی را انجام می‌دهد. مقادیر ۰ و ۰- و به و سایر مقادیر عددی به نگاشت می‌گردد. همچنین رشتهٔ تهی و سایر رشته‌ها در نظر گرفته می‌شود. انواع شی و تابع و و هم در نظر گرفته می‌شود.
 زمانی که یکی از عملوندهای عملگر + رشته باشد، تبدیل به رشته صورت می‌گیرد، مانند ۵ + “۳۷” که می‌شود “۵۳۷”
 عملگرهای دیگری عددی (جز جمع) منجر به تبدیل به عدد می‌گردد مانند ۳ – “۵۷” که مقدار عددی ۵۴- را به دست می‌دهد. 
 برنامه‌های ورودی و خروجی در مرورگر وب:
 برای استفاده ساده از عناصر و :
 برنامه مرتب‌سازی یک آرایه برنامه :
 برنامه :
 استفاده از توابع برای ساخت شی جدید: ارث‌بری در جاوااسکریپت با استفاده از زنجیره «پیش نمونه»: یا وانیلا جی اس (Vanilla JS) اصطلاحی است که به همان زبان جاوااسکریپت اطلاق می‌شود. در حقیقت، وانیلا جی اس هیچ یا کتابخانهٔ خاصی نیست. این اصطلاح بیشتر برای کسانی ساخته شده‌است که گمان می‌کنند برای استفاده از جاوااسکریپت، حتماً باید از کتابخانه‌های موجود یا سکوی خاصی استفاده بکنند. 
 وانیلا جی اس از آنجا که اصطلاحی دیگر برای استفاده از زبان جاوااسکریپت بدون استفاده از سکوی یا کتابخانه خاصی است، سریع‌ترین کتابخانه جاوااسکریپت موجود تلقی می‌شود. 
 در سال ۲۰۱۸ و ۲۰۱۹، جاوااسکریپت به عنوان یکی از برترین زبان‌های دنیا برگزیده شد. البته قبل از سال ۲۰۱۸، جاوااسکریپت رتبهٔ خوبی داشت. در سال ۲۰۲۰، جاوااسکریپت، در رتبه دوم یا سوم قرار گرفته‌است.
 ناگفته نباشد که جاوا اسکریپت در سال‌های ۲۰۱۸ و ۲۰۱۹ به عنوان محبوب‌ترین زبان نیز برگزیده شد.
 طبق نظرسنجی‌های انجام شده توسط وبگاه جاوااسکریپت به مدت ۹ سال متوالی تا سوال ۲۰۲۱، به‌عنوان پرکاربردترین زبان برنامه‌نویسی انتخاب شده بود.
{"title": "جاوااسکریپت", "link": "https://fa.wikipedia.org//w/index.php?title=%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA&oldid=35157231", "language": "fa"}