https://javascript.plainenglish.io/7-advanced-javascript-techniques-every-developer-should-know-by-now-including-code-4572d5d7a060