رسول اسماعیلی
رسول اسماعیلی
خواندن ۳ دقیقه·۵ سال پیش

ES5 vs ES6 - بخش دوم


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

لیست تغییرات این نسخه :

  • Block-Scoped Variables and Constants (let, const)
  • Arrow Functions
  • Default Parameter Values
  • Spread Operator
  • String Interpolation
  • Raw String Access
  • Promises
  • Binary & Octal Literal
  • Regular Expression Sticky Matching
  • Manipulating objects
  • Value Export/Import
  • Classes
  • Symbol Type
  • Iterator & For-Of Operator
  • Generators
  • Map/Set & WeakMap/WeakSet
  • New Built-In Methods




String Interpolation

خیلی از مواقع میخواهیم متغیری را میان یک رشته قرار دهیم مخصوصا وقتی با HTML کار میکنیم.

خب کاری که در ES5 می کردیم اینطوری بود :

var message = &quotmy name is : &quot + person.name + &quot\n&quot ;

حالا در ES6 این کارو میتونیم خیلی راحت تر انجام بدیم :

var message = `my name is: ${person.name} \n`;

با کمک `` این دو عزیز که خیلی کم کسی ازشون استفاده میکنه و کمتر کسی اسمشو میدونه میشه در میان رشته با استفاده از {}$ متغیر را قرار داد.



Raw String Access

رشته ها از یک سری کاراکتر تشکیل شده اند که پشت سر هم آمده اند، خب حالا در ES6 این امکان وجود داره که بشه به کاراکترهای رشته ها مثل خانه های آرایه دسترسی داشت.

const city = ”tehran”; console.log(city[2]); // h console.log(city[3]); // r console.log(“virgool”[4]); // o



Promises vs Callbacks

جاوا اسکریپت یک زبان async هست و خیلی از مواقع نیاز داریم که از callback ها استفاده کنیم. وقتی نیاز باشه این callback ها تو دل هم صدا زده بشن در انتها یک کد ناخوانا و پیچیده خواهیم داشت. خوشبختانه در این مورد promises ها در ES6 به ما کمک می کنند.

یک promise یه صورت زیر تعریف میشه :

const somePromise = new Promise((resolve, reject) => { if (false) { resolve([20, 30, 40]); } else { reject(&quotsome error occur&quot); } });

ورودی های resolve , reject هستند که در صورت موفق بودن باید resolve و در صورتی که موفقیت آمیز نباشد باید reject را با دیتایی که میخواهیم مقدار دهی کنیم .

استفاده از promise :

somePromise.then( resolveResult => { console.log(resolveResult); }).catch(rejectResult => { console.log(rejectResult); });

برای استفاده باید دو تابع then , catch را پیاده سازی کنیم، در صورتی که promise با resolve به پایان برسد تابع then و اگر با reject به پایان برسد تابع catch به طور خودکار فراخوانی می شود و دیتایی که promise برگردانده است در اختیار این دو تابع هنگام فراخوانی قرار می گیرد.



Binary & Octal Literal

برای نوشتن اعداد مبنای 8 و 2 در ES5 باید به صورت زیر عمل میکردیم .

var value = parseInt(&quot111110111&quot, 2); //503 var value = parseInt(&quot767&quot, 8); //503;

حالا در ES6 میتونیم با پیشوند این کارو خیلی راحت تر انجام بدیم و لازم به تبدیل نیست :

let value = 0b111110111; // 503 let value = 0o767 ; //503




به پایان بخش دوم رسیدیم امیدوارم مفید بوده باشه.

برنامه نویسیجاوااسکریپتes6promisejs
رسول اسماعیلی - برنامه نویس
شاید از این پست‌ها خوشتان بیاید