ECMAScript 6 - ECMAScript 2015

از موتو کد، دانشنامهٔ برنامه‌نویسی

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 (به فارسی: ناحیه) یک بلاک تعریف کنید.

مثال[ویرایش | ویرایش]

var x = 10;
// Here x is 10
{
  let x = 2;
  // Here x is 2
}
// Here x is 10


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


کلمهٔ کلیدی const در جاوا اسکریپت[ویرایش | ویرایش]

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

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

مثال[ویرایش | ویرایش]

var x = 10;
// Here x is 10
{
  const x = 2;
  // Here x is 2
}
// Here x is 10


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


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

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

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

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

مثال[ویرایش | ویرایش]

// ES5
var x = function(x, y) {
   return x * y;
}

// ES6
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”:

class Car {
  constructor(brand) {
    this.carname = brand;
  }
}

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

مثال[ویرایش | ویرایش]

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

class Car {
  constructor(brand) {
    this.carname = brand;
  }
}
mycar = new Car("Ford");


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


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

مقدار پیش فرض پارامترهای تابع[ویرایش | ویرایش]

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

مثال[ویرایش | ویرایش]

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


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


متد Array.find()[ویرایش | ویرایش]

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

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

مثال[ویرایش | ویرایش]

var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}


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


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

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

متد Array.findIndex()[ویرایش | ویرایش]

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

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

مثال[ویرایش | ویرایش]

var numbers = [4, 9, 16, 25, 29];
var first = numbers.findIndex(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}


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


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

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

ویژگی‌های جدید برای شیء 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 را برمی‌گرداند.

مثال[ویرایش | ویرایش]

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


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


متد Number.isSafeInteger()[ویرایش | ویرایش]

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

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

مثال[ویرایش | ویرایش]

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


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


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

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

متدهای کلی (Global) جدید[ویرایش | ویرایش]

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

  • isFinite()
  • isNaN()

متد isFinite()[ویرایش | ویرایش]

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

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

مثال[ویرایش | ویرایش]

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


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


متد isNan()[ویرایش | ویرایش]

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

مثال[ویرایش | ویرایش]

isNaN("Hello");       // returns true


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


عملگر به توان رساندن[ویرایش | ویرایش]

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

مثال[ویرایش | ویرایش]

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


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


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

مثال[ویرایش | ویرایش]

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


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


منابع آموزشی[ویرایش]