https://javascript.plainenglish.io/3-advanced-javascript-concepts-you-must-know-as-a-senior-developer-b1f4e8379305