ECMAScript 6 - ECMAScript 2015

از ویکی‌کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
JavaScript-menu.png
موارد آموزشی
فرم‌ها در جاوا اسکریپت
اشیاء در جاوا اسکریپت
تابع در جاوا اسکریپت
HTML DOM در جاوا اسکریپت
Browser BOM در جاوا اسکریپت
AJAX در جاوا اسکریپت
JSON در جاوا اسکریپت
جی‌کوئری در برابر جاوا اسکریپت
مرجع جاوا اسکریپت

ECMAScript6 با نام ES6 و ECMAScript2015 نیز شناخته می‌شود. [۱]

برخی از مردم این نسخه را JavaScript 6 نیز می‌نامند.

این فصل به برخی از ویژگی‌های جدید در ES6 اشاره می‌کند.

سازگاری مرورگرها با ES6 (ECMAScript 2015)

نسخه ۱۰ مرورگر سافاری و نسخه ۱۴ مرورگر Edge اولین مرورگرهایی بودند که به طور کامل از Es6 پشتیبانی می‌کردند:

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
Chrome 58 Edge 14 FireFox 54 Safari 10 Opera 55
ژانویه ۲۰۱۷ اوت ۲۰۱۶ مارس ۲۰۱۷ ژوئیه ۲۰۱۶ اوت ۲۰۱۸


کلمهٔ کلیدی let در جاوا اسکریپت

کلمه let به شما اجازه می‌دهد که یک متغیر را در Scope (به فارسی: ناحیه) یک بلاک تعریف کنید.

مثال

1 var x = 10;
2 // Here x is 10
3 {
4   let x = 2;
5   // Here x is 2
6 }
7 // Here x is 10


مشاهدهٔ نتیجه


کلمهٔ کلیدی const در جاوا اسکریپت

کلمهٔ کلیدی const به شما این اجازه می‌دهد که یک ثابت (یک متغیر جاوا اسکریپت با مقدار ثابت) تعریف کنید.

ثابت‌ها بسیار شبیه به متغیرهایی هستند که با استفاده از کلمه let تعریف می‌شوند، به جز اینکه مقادیر ثابتها قابل تغییر نیستند.

مثال

1 var x = 10;
2 // Here x is 10
3 {
4   const x = 2;
5   // Here x is 2
6 }
7 // Here x is 10


مشاهدهٔ نتیجه

شما می‌توانید در مورد کلمات let و const در فصل کلمات کلیدی Let / Const در جاوا اسکریپت، مطالب بیشتری را بخوانید.

تعریف تابع به صورت پیکان یا فلش

تعریف تابع به صورت پیکان یا فلش به شما اجازه نوشتن تعریف تابع‌ها را با شیوه نوشتار (به انگلیسی: syntax) کوتاه تری را می‌دهد.

شما به کلمهٔ کلیدی function ،کلمهٔ کلیدی return ،و یک جفت براکت‌ها { } نیازی ندارید.

مثال

1 // ES5
2 var x = function(x, y) {
3    return x * y;
4 }
5 
6 // ES6
7 const x = (x, y) => x * y;


مشاهدهٔ نتیجه


تابع‌هایی با این روش نوشتار (به انگلیسی: syntax) واژهٔ کلیدی This خود را ندارند. آنها برای تعریف متدهای شیء، مناسب نیستند.

تابع‌هایی با این روش نوشتار (به انگلیسی: Syntax) به بالای اسکریپت جابه‌جا (به انگلیسی: hoisted) نمی‌شوند. آنها را می‌بایست قبل از استفاده، تعریف کرد.

استفاده از واژهٔ const بسیار روش مطمئن تری نسبت به واژهٔ var است، زیرا که یک تابع همیشه یک مقدار ثابت را برمی‌گرداند.

شما نمی‌توانید در صورتی که تابع شما تک عبارتی است کلمهٔ کلیدی return و یک جفت براکت‌ها یعنی { } را فراموش کنید. به خاطر این امر عادت خوبی است که اگر آنها را به صورت زیر بنویسید:

مثال

const x = (x, y) => { return x * y };


مشاهدهٔ نتیجه

شما می‌توانید مطالب بیشتری را در این مورد در فصل تعریف توابع به صورت پیکان یاد بگیرید.

کلاس ها

در نسخه ES6 مفهوم کلاس‌ها اضافه شدند.

یک کلاس نوعی تابع است، اما به جای استفاده از کلمهٔ کلیدی function برای تعریف آن از کلمهٔ کلیدی class استفاده می‌کنیم و ویژگی‌های آن درون متد constructor() مقدار دهی می‌شود.

از کلمهٔ کلیدی class برای ساختن یک کلاس (به انگلیسی: Class) استفاده کنید، و همیشه به آن متد سازنده (به انگلیسی: Constructor) را اضافه کنید.

متد سازنده، هر زمانی که شیءای از کلاس مقداردهی شود فراخوانی می‌شود.

مثال

یک تعریف ساده کلاس برای کلاسی با نام “Car”:

1 class Car {
2   constructor(brand) {
3     this.carname = brand;
4   }
5 }

حال شما می‌توانید با استفاده از کلاس Car شی بسازید:

مثال

ساخت یک شی بر پایه کلاس Car به نام “mycar”:

1 class Car {
2   constructor(brand) {
3     this.carname = brand;
4   }
5 }
6 mycar = new Car("Ford");


مشاهدهٔ نتیجه

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

مقدار پیش فرض پارامترهای تابع

نسخه ES6 به تابع‌ها این اجازه را می‌دهد که برای پارامترهای خود مقادیر پیش‌فرض داشته باشند.

مثال

1 function myFunction(x, y = 10) {
2   // y is 10 if not passed or undefined
3   return x + y;
4 }
5 myFunction(5); // will return 15


مشاهدهٔ نتیجه


متد Array.find()

متد find() مقدار اولین عنصر آرایه را که با یک شرط همخوانی دارد را برمی‌گرداند.

این مثال اولین عنصری که مقدار آن بزرگتر از ۱۸ است را پیدا می‌کند (مقدار آن را برمی‌گرداند):

مثال

1 var numbers = [4, 9, 16, 25, 29];
2 var first = numbers.find(myFunction);
3 
4 function myFunction(value, index, array) {
5   return value > 18;
6 }


مشاهدهٔ نتیجه


توجه داشته باشید که تابع، ۳ آرگومان دارد:

  • مقدار عنصر آرایه
  • اندیس یا موقعیت عنصر
  • خود آرایه

متد Array.findIndex()

متد findIndex() موقعیت یا شماره اندیس اولین خانه ای را که با یک شرط هم‌خوانی داشته باشد را برمی‌گرداند.

این مثال اندیس اولین عنصری را که بزرگتر از ۱۸ است را برمی‌گرداند:

مثال

1 var numbers = [4, 9, 16, 25, 29];
2 var first = numbers.findIndex(myFunction);
3 
4 function myFunction(value, index, array) {
5   return value > 18;
6 }


مشاهدهٔ نتیجه


توجه داشته باشید که تابع ۳ آرگومان دارد:

  • مقدار عنصر آرایه
  • اندیس یا موقعیت عنصر
  • خود آرایه

ویژگی‌های جدید برای شیء Number

ES6 ویژگی‌های زیر را به شیء Number اضافه کرده‌است:

  • EPSILON
  • MIN_SAFE_INTEGER
  • MAX_SAFE_INTEGER

مثال

var x = Number.EPSILON;


مشاهدهٔ نتیجه


مثال

var x = Number.MIN_SAFE_INTEGER;


مشاهدهٔ نتیجه


مثال

var x = Number.MAX_SAFE_INTEGER;


مشاهدهٔ نتیجه


متدهای جدید شیء Number

نسخه ES6 دو متد زیر را به شیء Number اضافه کرده‌است:

  • Number.isInteger()
  • Number.isSafeInteger()

متد Number.isInteger()

متد Number.isInteger() در صورتی که آرگومان آن یک عدد صحیح (به انگلیسی: Integer) باشد مقدار true را برمی‌گرداند.

مثال

1 Number.isInteger(10);        // returns true
2 Number.isInteger(10.5);      // returns false


مشاهدهٔ نتیجه


متد Number.isSafeInteger()

یک عدد صحیح safe، عددی است که بتوان آن را دقیقاً مانند یک عدد اعشاری از نوع double نوشت.

متد Number.isSafeInteger() در صورتی که مقدار آرگومان آن یک عدد صحیح safe باشد، مقدار true را برمی‌گرداند.

مثال

1 Number.isSafeInteger(10);    // returns true
2 Number.isSafeInteger(12345678901234567890);  // returns false


مشاهدهٔ نتیجه

اعداد صحیح Safe از (۱ - ۲۵۳)- تا (۱ - ۲۵۳)+ وجود دارند.

این عدد، یک عدد صحیح Safe است: ۹۰۰۷۱۹۹۲۵۴۷۴۰۹۹۱. این عدد، یک عدد صحیح Safe نیست: ۹۰۰۷۱۹۹۲۵۴۷۴۰۹۹۲.

متدهای کلی (به انگلیسی: Global) جدید

در نسخه نسخه ES6 دو متد جدید Global اضافه شده‌است:

  • isFinite()
  • isNaN()

متد isFinite()

متد global (به فارسی: کلی)، isFinite() در صورتی که آرگومان آن از نوع Infinity (به فارسی: بی‌نهایت) یا NaN باشد، مقدار false را برمی‌گرداند.

در غیر اینصورت مقدار true را برمی‌گرداند:

مثال

1 isFinite(10/0);       // returns false
2 isFinite(10/1);       // returns true


مشاهدهٔ نتیجه


متد isNan()

متد global (به فارسی: کلی) isNaN() در صورتی که آرگومان آن از نوع NaN باشد مقدار true را برمی‌گرداند. در غیراینصورت مقدار false را برمی‌گرداند:

مثال

isNaN("Hello");       // returns true


مشاهدهٔ نتیجه


عملگر به توان رساندن

عملگر توان (**) عملوند اول خود را به توان عملوند دوم خود می‌رساند.

مثال

1 var x = 5;
2 var z = x ** 2;          // result is 25


مشاهدهٔ نتیجه


دستور x ** y نتیجه ای مشابه متد Math.pow(x,y) دارد:

مثال

1 var x = 5;
2 var z = Math.pow(x,2);   // result is 25


مشاهدهٔ نتیجه


منابع آموزشی