DEV Community

Cover image for What is your favourite ES6 feature?
Tanwa Sripan
Tanwa Sripan

Posted on

What is your favourite ES6 feature?

Helloooo everyone! 👋 It has been a while since I last posted, I have been rather busy the past 2 weeks!

As the title suggests, I am curious to know what your favourite JavaScript ES6 feature is...🤔

I was recently asked this in an interview and it surprised me as I have been learning JS with latest features so I don't quite know which features are ES6 and which are newer... So I answered with what came to mind, and it was Promises. Since I have been learning about backend development with NodeJS, I have learnt a lot about asynchronous programming which is why I chose that answer (I also talked about async/await, which was not introduced until ES7, oops!). Of course, I had to explain why I chose that particular feature and I talked about the benefit of how it helps eliminate callback hell, improve error handling and how you can use Promise chaining to your advantage.

So, I present to you the same question, what is/are your favourite ES6 feature/s and why? (If you are preparing for an interview, this could be a good practice to answer out loud 😉).

Top comments (16)

Collapse
 
pengeszikra profile image
Peter Vivo • Edited

generator function you can get in and leave (yield) so many times, it is perfect for declarative coding time consuming process. Modern usecase is redux-saga

really old poker example on codepen.io

   // example of use generators
   * singleRound(){

    for( let deal of this.dealing() ) yield deal

    for( let flop of this.theBetRound( 'Flop' ) ) yield flop

    for( let flop of this.theFlop() ) yield

    for( let turn of this.theBetRound( 'Turn' ) ) yield turn
    yield this.theTurn(); 

    for( let river of this.theBetRound( 'River' ) ) yield river
    yield this.theRiver(); 

    for( let showdown of this.theBetRound( 'Showdown' ) ) yield showdown

    let winnerIs = []
    for( let score of this.showScores( winnerIs )) yield score
    let winner = this.theShowdown( winnerIs )
    yield winner    
    winner.chips += this.dealer.drawBet()
    for( let pause of Array(10)) yield winner

    // yield this.theShowdown()
  }
Enter fullscreen mode Exit fullscreen mode
Collapse
 
justtanwa profile image
Tanwa Sripan

Really cool, thank you for sharing!

Collapse
 
timkovik profile image
timkovik

Optional chaining is amazing

Collapse
 
justtanwa profile image
Tanwa Sripan

That's cool also, though I have not used it much

Collapse
 
cmgustin profile image
Chris Gustin

I’m a big fan of .forEach() and the related .filter() and .map() methods.

Much cleaner and easier to read than the old C-style iterative loops in my opinion, and a great addition to the language given how much of modern JS and front-end dev involves looping through large amounts of data in some way or another.

Collapse
 
justtanwa profile image
Tanwa Sripan

I agree, I also like array methods, they are very handy :D

Collapse
 
justtanwa profile image
Tanwa Sripan

That's really cool, I have not used Proxies before, do you have an example use case you have used in the past?

Collapse
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️ • Edited

Here is an example of how I use Proxies in the wild. They're one of my favourite things in JS; the sky is the limit for what you can build using them :D


EDIT: In case that code requires an explanation, here is the documentation.

Thread Thread
 
justtanwa profile image
Tanwa Sripan

Wow! A lot going on here, but it looks awesome :D Not sure I understand it all, but thank you for the example.

Collapse
 
admirnisic profile image
admirnisic

Do not know what is my favorite one but one cool feature which is on top of my list is default value for function parameters.

function sayHello(name = 'World') {
    return `Hello ${name}!`;
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
mistval profile image
Randall

There are a lot of great features that came in ES6, but I would agree that Promises are my favorite, especially since they paved the way for async/await. Const, let, and classes are also great.

Collapse
 
andrewbaisden profile image
Andrew Baisden

Probably the new array methods.

Collapse
 
mrdulin profile image
official_dulin

Optional chain

Collapse
 
jcubic profile image
Jakub T. Jankiewicz • Edited

Mine are Proxy objects and default symbols that can be used for meta programming.

 
justtanwa profile image
Tanwa Sripan

Thank you for this example!

Collapse
 
blackeyv profile image
raymond-yan • Edited

Cool trick. Never thought about using destructuring like this.