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

ویژگی های جدید EcmaScript نسخه 6 یا ES6

در این مطلب با ویژگی های جدید معرفی شده در EcmaScript نسخه 6 یا اصطلاحاً ES6 و کاربردهای آن آشنا خواهیم شد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

کلاس ها

کلاس‌ها در Es6 معرفی شده اند. یک کلاس یک نوع تابع است با این تفاوت که به جای استفاده از کلمه کلیدی function از کلمه کلیدی class استفاده می کنیم و ویژگی های کلاس در داخل متد constructor مقدار دهی می شوند. برای تعریف کلاس از کلمه کلیدی class استفاده کنید و همیشه متد constructor را اضافه نمایید. متد constructor هر وقت که یک شی از کلاس ساخته می شود فراخوانی می گردد. برای مثال در زیر یک کلاس با نام Car تعریف شده است.

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

بعد از این که کلاس تعریف شد می توان از آن شی ساخت برای ساخت شی باید طبق مثال زیر عمل کرد.

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

کلاس های جاوا اسکریپت قابلیت هایی مانند متد و وراثت هم دارند که در مطالب بعدی توضیح داده می شوند.

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

امکانی که در ES6 قرار داده شده است این است که توابعی را که تعریف می کنیم می توانند یک مقدار اولیه داشته باشند. که اگر کاربر مقداری برای آن پارامتر در نظر نگرفته بود مقدار پارامتر همان مقدار پیش فرض باشد. برای مثال در کد زیر اگر مقداری برای y در نظر نگیریم مقدار آن به طور پیش فرض 10 خواهد بود.

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

متد Array.find

متد find متدی است که بر روی آرایه ها کار می کند و نحوه کار آن به این صورت است که یک تابع به عنوان ورودی میگیرد و اولین عنصر از آرایه را که در آن تابع مقدار true ایجاد کند را برمی گرداند. برای مثال متد find در کد زیر اولین عدد بزرگتر از 18 که 25 است را برمی گرداند. به نحوه نوشتن کد تابع ورودی دقت کنید.

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

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

تابع ورودی find دارای 3 پارامتر ورودی است که خود آیتم و اندیس آن و خود آرایه می باشد.

متد Array.findIndex

این متد هم شبیه متد find است و تفاوتی که بین این دو متد وجود دارد این است که findIndex اندیس آرایه عنصری را که در تابع ورودی مقدار true بگیرد را برمی گرداند. برای مثال در کد زیر مقدار ۳ برگردانده می شود.

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

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

تعداد آرگومان های تابع ورودی متد در findIndex هم شبیه به همان متد find است.

ویژگی های جدید برای اعداد

در ES6 برای اعداد ۳ ویژگی جدید فراهم شده است که در زیر می بینید.

  • EPSILON
  • MIN_SAFE_INTEGER
  • MAX_SAFE_INTEGER

ثابت EPSILON کوچکترین عدد را برمیگرداند و ثابت MIN_SAFE_INTEGER کوچکترین عدد صحیح را برمی گرداند و MAX_SAFE_INTEGER هم بزرگترین عدد صحیح را برمی گرداند. می توانید کد زیر را اجرا کنید و نتیجه هرکدام را در مرورگر خود ببینید

var x = Number.EPSILON;
var x = Number.MIN_SAFE_INTEGER;
var x = Number.MAX_SAFE_INTEGER;

منظور از کلمه safe در اینجا به این معنی است که عدد صحیحی باشد که بتوان آن را به صورت عدد اعشاری دابل نشان داد.

متد های جدید برای اعداد

در ES6 دو متد جدید هم به اعداد اضافه شده است و انها عبارتند از:

Number.isInteger()
    Number.isSafeInteger()

متد isInteger متدی است که اگر ورودی متد یک عدد صحیح باشد مقدار true و در غیر این صورت مقدار false بر می گرداند. برای مثال به کد زیر دقت کنید:

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

متد isSafeInteger مشخص می کند که عدد وارد شده را می توان در قالب عدد دابل به صورت دقت مضاعف نمایش داد یا خیر برای مثال به کد زیر دقت کنید.

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

اعداد صحیح safe integer اعدادی هستند که بین منفی 2^53 تا مثبت 2^53 (دو به توان 53)باشند.

توابع سراسری

در ES6 همچنین ۲ تابع سراسری اضافه شده است به نام های isFinite, isNaN. در تابع isFinite اگر ورودی بینهایت یا تعریف نشده باشد مقدار false و در غیر این صورت مقدار true برگردانده می شود. و تابع isNaN در صورتی که مقدار ورودی تعریف نشده باشد مقدار true برمی گرداند. برای مثال به قطعه کدهای زیر دقت کنید.

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

isNaN("Hello");       // returns true

عملگر توان

با وجود این که قبلا عمل توان را می توانستیم با استفاده از متد  Math.pow انجام دهیم ولی در Es6 عملگری برای توان اضافه شده است. این عملگر ** است برای مثال اگر بخواهیم 5 را به توان 2 برسانیم باید کد زیر را داشته باشیم.

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

دقت داشته باشید این که برای توان از Math.pow یا ** استفاده کنیم در نتیجه تفاوتی ندارد.
با وب سایت tosinso همراه باشید.


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات