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

ECMAScript چیست؟Reviewed by علی شانه ساز on Feb 11Rating: 5.0

حال که در مقاله قبلی با مقدمات جاوا اسکریپت آشنا شدیم ، نوبت به بررسی استانداردهایی می رسد که در هنگام کار با این زبان ، اهمیت زیادی داشته و نقش مهمی ایفا می کنند. یکی از مهمترین این استانداردهای کار با زبان جاوا اسکریپت ، ECMAScript می باشد. بی شک استفاده درست از جاوا اسکریپت ، از جمله مواردی است که در طراحی سایت از اهمیت فراوانی برخورار بوده و در سئو و بهینه سازی سایت نیز موثر است.

و اینک ، ECMAScript

در اواسط سال ۱۹۹۷ ، مایکروسافت و Netscape در همکاری با انجمن اروپایی سازندگان کامپیوتر یا European Computer Manufacturers Association نسخه از استانداردی را منتشر کردند که ECMAScript، یا به شکل رسمی تر ۲۶۲-ECMA نامیده می شد. از آن زمان تاکنون، تمام مرورگرهای مایکروسافت نسخه هایی از این استاندارد ECMAScript را پیاده سازی کرده اند. دیگر مرورگرهای مشهور، مانند فایرفاکس، اپرا و سافاری نیز پیاده سازی هایی از این استاندارد را ارائه کرده اند.

نسخه ۳ این استاندارد در سال ۱۹۹۹ منتشر شد. خبر خوب اینکه اینترنت اکسپلورر ۴ و نت اسکیپ ۴٫۵، این نسخه را پشتیبانی می کنند و همچنین از آن زمان همه مرورگرهای بزرگ این نسخه از جاوا اسکریپت که شکل رسمی آن استاندارد ۲۶۲-ECMA است را پشتیبانی کرده اند.

خبر بد اینکه هر مرورگر، این استاندارد را با اندکی تفاوت نسبت به بقیه پیاده سازی می کند. در نتیجه بایگانی بین مرورگرها همچنان دغدغه توسعه دهندگان جاوا اسکریپت محسوب می شود.

نسخه ۵ از ECMAScript، موسوم به ۲۶۲-ECMA نسخه ۵ ، در اواخر سال ۲۰۰۹ میلادی انتشار یافت. از نسخه ۴ این استاندارد به دلایل مختلفی، از جمله جلوگیری از آشفتگی در طرح های پیشنهادی، صرف نظر شد. با گذشت زمان ، نسخه ۵ از ۲۶۲-ECMA روزبه روز با استقبال بیشتری مواجه می شود.

ECMAScript 6 نسخه جدیدتری از استاندارد ۲۶۲-ECMA به حساب می آید. این نسخه که در سال ۲۰۱۵ منتشر شد قابلیت های بسیاری دارد که به قدرتمند سازی و استاندارد تر شدن زبان جاوا اسکریپت کمک بفراوانی کرده است. بسیار از قابلیت ها و کمبودهایی که برنامه نویسان را در هنگام استفاده از جاوا اسکریپت بسیار آزرده خاطر می کرد ، عدم قابلیت استفاده از جاوا اسکریپت در کدنویسی سمت سرور بود. این قابلیت در ECMAScript نسخه ۶ اضافه شده است. از دیگر قابلیت های جدیدی که در ECMAScript 6 وجود دارد می توان به موارد زیر اشاره نمود:

  • تعریف Const ها و تعریف محدوده متغیر ها
  • شی گرایی استاندارد و قدرمند با Class ها
  • Template String ها
  • ماژولار کردن و مدیریت بهتر فایل ها و Library با Module ها
  • Promise ها
  • نوع جدید تعریف توابع به صورت Arrow Functions
  • امکانات بیشتر برای استفاده از آرگومان های تابع توسط (Default + Rest + Spread)
  • متد های جدیدتر و کارا تر برای آرایه ها – رشته ها – اعداد – محاسبات و اشیا
  • بهبود کارکردن با Unicode ها و زبان های Middle East
  • و بسیار دیگر از امکانات ریز و درشت

جدید ترین نسخه ECMAScript یعنی نسخه ۷ ، در مقایسه با نسخه سال قبل آن، ویژگی های کمتری دارد. شرکت ECMA International علاوه بر آن، تصمیم گرفته است که سال آینده از توابع Async هم پشتیبانی کند. در نسخه جدید، توسعه دهندگان همچنین بالاخره می توانند از عملگر Exponential استفاده کنند تا کارشان در نوشتن عبارات ریاضی ساده تر شود.

به عنوان برنامه نویسی که در بسیاری از برنامه های کاربردی وب از جاوا اسکریپت استفاده کرده است ، نکته ای را خاطرنشان می سازم و آن اینکه شما باید تفاوت های موجود بین نسخه های مخالف ECMAScript و همچنین تفسیرهای متفاوت از جاوا اسکریپت را همیشه مدنظر داشته باشید.

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

آزمایش وب سایتتان در چندین مرورگر امری ضروری است. حتی اگر مطمئن هستید شما تنها در اینترنت اکسپلورر استفاده خواهد شد یا این مرورگر تنها مرورگری است که به رسمی پشتیبانی خواهید کرد، همچنان نیاز دارید تا در دیگر مرورگرها نیز امتحان کنید نه فقط از جنبه امنیتی مهم است، بلکه توانایی شما را به عنوان یک توسعه دهنده در آشنایی با تکنولوژی های جدید در اینترنت نیز نشان خواهد داد.

انبوهی از استانداردها

اگر تصور میکنید که استانداردهای ECMAScript چندان مرتبط با هم تعریف نشده اند، حق با شماست. هر مرورگر، جاوااسکریپت را با مقداری تفاوت نسبت به بقیه پشتیبانی می کند و این مطلب است که کار شما  و کار من را سخت تر می کند. تلاش برای توضیح همه این اختلاف های جزئی و نکات ظریف بسیار دشوارتر از نوشتن در مورد یک زبان برنامه نویسی مانند ویژوال بیسیک یا پرل است که توسط یک شرکت خاص تولید شده است. کار شما (و البته کار من) آگاهی نسبت به به این نقاط اختلاف، لحاظ کردن آنها در موقع لزوم و تلاش در جهت یافتن هر چه بیشتر وجوه مشترک بین آنهاست.