{"id":891,"url":"https://github.com/didicodes/javascript-dev-bookmarks","name":"javascript-dev-bookmarks","description":"A collection of articles that will help you get better at JavaScript.","projects_count":89,"last_synced_at":"2026-04-07T08:00:30.463Z","repository":{"id":38214869,"uuid":"285504186","full_name":"didicodes/javascript-dev-bookmarks","owner":"didicodes","description":"A collection of articles that will help you get better at JavaScript.","archived":false,"fork":false,"pushed_at":"2024-02-22T20:05:54.000Z","size":102,"stargazers_count":1009,"open_issues_count":8,"forks_count":137,"subscribers_count":33,"default_branch":"master","last_synced_at":"2024-05-28T21:54:05.480Z","etag":null,"topics":["awesome","awesome-list","hashnode","javascript","newbies"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/didicodes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-08-06T07:30:30.000Z","updated_at":"2024-05-24T18:33:04.000Z","dependencies_parsed_at":"2024-01-11T17:47:09.570Z","dependency_job_id":"2d7fdbfa-6c0f-4f80-96e2-3efce2e2f489","html_url":"https://github.com/didicodes/javascript-dev-bookmarks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didicodes%2Fjavascript-dev-bookmarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didicodes%2Fjavascript-dev-bookmarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didicodes%2Fjavascript-dev-bookmarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didicodes%2Fjavascript-dev-bookmarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/didicodes","download_url":"https://codeload.github.com/didicodes/javascript-dev-bookmarks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249381158,"owners_count":21261249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"readme":"[![JavaScript Dev Bookmarks](js-dev-bookmarks.png)](https://github.com/didicodes/javascript-dev-bookmarks) \n\n**A collection of articles that will help you get better at JavaScript.💛**\n\nOver the last year, developers from different parts of the world have published a lot of articles about various JavaScript topics on their Hashnode powered blogs. So, I decided to curate the most interesting ones and actively maintain it.\n\n\u003e For more context, [Hashnode](https://hashnode.com/) is a platform for developers to start a personal blog on their own domain for free. If you have written an article about JavaScript on your Hashnode blog, **please submit a pull request with your link**. If you don't, you can [sign up and get started](https://hashnode.com/) in \u003c 2 minutes :rocket:. \n\n## Table of Contents\n\n- [`Why JavaScript?`](#Why JavaScript?)\n- [`this`](#this)\n- [Closure](#closure)\n- [Scopes](#scopes)\n- [Functions](#functions)\n- [Arrays](#arrays)\n- [Objects](#objects)\n- [ES6 and More](#es6--more)\n- [Promise](#promise)\n- [Fun Projects](#projects)\n\n## `Why JavaScript?`\n- [Why JavaScript is a Good Choice for Beginners](https://catalins.tech/why-javascript-is-a-good-choice-for-beginners-ckdr8w2o104jpl9s1gold7rt9)\n\n## `this`\n\n- [JavaScript: this is easy and what do you need to know about it](https://blog.greenroots.info/javascript-this-is-easy-and-what-do-you-need-to-know-about-it-ckca1pqqr00gmmns13n921wib)\n- [Closure and this - How are variables resolved within a function?](https://blog.bendtherul.es/closure-and-this-how-are-variables-resolved-within-a-function-ckddoqwv80154xvs198jkaa5m)\n- [Understanding this](https://blog.meettanvi.com/understanding-this-ckd7jnsyv005nses14abf9f6g)\n- [The JavaScript \"this\" keyword](https://codewithkisha.hashnode.dev/the-javascript-this-keyword-ckdd4cbqi00anyss165fgfyok)\n\n## Closures\n\n- [Understanding JavaScript Closure](https://blog.greenroots.info/understanding-javascript-closure-with-example-ckd17fci5001iw5s1fju4f8r0)\n- [this-less Javascript Development](https://hashnode.com/post/this-less-javascript-development-cj4kzqj0w00m2abwtl3m5w25t)\n- [Understanding Closures in JavaScript](https://moshood.hashnode.dev/understanding-closures-in-javascript-cka8xw7vo008zb6s1tm1zm2gw)\n- [Understanding Closure in JavaScript](https://erons.hashnode.dev/understanding-closures-in-javascript-ck1k2c8cj00cozls1ic9fhmai)\n- [10x your code with the facade pattern, currying, and closures](https://blog.mauriciorobayo.com/10x-your-code-with-the-facade-pattern-currying-and-closures-ck6k04als010ndfs1jg6gg5jo)\n\n## Scope\n\n- [JavaScript Scope Fundamentals with Tom and Jerry](https://blog.greenroots.info/javascript-scope-fundamentals-with-tom-and-jerry-ckcq723h4007vkxs18dxa97ae)\n- [Let's Talk 'Scopes' in JavaScript](https://blog.nemotivity.xyz/lets-talk-scopes-in-javascript-ckcytt3m1002k41s18q5249jy)\n- [Lexical Environments, Execution Context, Scope and Hoisting in JavaScript](https://diganta.hashnode.dev/10-lexical-environments-execution-context-scope-and-hoisting-in-javascript-ck6id2pdo00dmd9s1siz1jasg)\n\n## Functions\n\n- [A step by step guide to functions in JavaScript](https://blog.rutikwankhade.dev/a-step-by-step-guide-to-functions-in-javascript-ck988kutu0038css17bxftivd)\n- [JavaScript Functions: Explained for Beginners](https://www.ebenezerdon.com/javascript-functions-explained-for-beginners-ck1591v9i00qtqis1zymwnb8o)\n- [What is function invoking in JavaScript?](https://hashnode.com/post/what-is-function-invoking-in-javascript-ckcn98w5h002qfqs1dbuy53fg)\n- [An Introduction to JavaScript Callbacks ⚔](https://blog.nemotivity.xyz/an-introduction-to-javascript-callbacks-ckdcmybdx03qu66s1eh06a991)\n- [Understanding JavaScript Callback Functions for Beginners](https://lo-victoria.com/understanding-javascript-callback-functions-for-beginners-ckav5w0qj07694us1xik1nstt)\n- [JavaScript knowledge - Callback functions explained](https://codingskill.hashnode.dev/javascript-knowledge-callback-functions-explained-ck5v41l7n086zqps1mw5lud09)\n- [JavaScript: Callback Functions](https://blog.gyenabubakar.dev/javascript-callback-functions-cjzqqijty000hd6s1ia0rv1pe)\n- [Higher Order Functions in less than five minutes !](https://glamboyosa.hashnode.dev/higher-order-functions-in-less-than-five-minutes-ck2wfmb5o002b1ws1lyad3p5s)\n- [What are higher-order functions, and why should anyone care?](https://jrsinclair.hashnode.dev/what-are-higher-order-functions-and-why-should-anyone-care-cjxl5goj40004bps19ztaiony)\n- [High Order Functions — Easy Mode](https://hashnode.com/post/high-order-functions-easy-mode-cjmhw3k1t00jwpys18ipvwztj)\n- [Call, Apply \u0026 Bind](https://erons.hashnode.dev/javascript-call-apply-and-bind-methods-cjyuupvil0007j7s18cg7uue9)\n- [A Simple Guide to Arrow Functions in JavaScript](https://lo-victoria.com/a-simple-guide-to-arrow-functions-in-javascript-ckd6kqoaz023am8s15m0u4x5k)\n- [Introduction To JavaScript Arrow Functions](https://yourwonder.hashnode.dev/arrow-functions-cka896kes01zey6s1ndq1gpdt)\n- [Learning JavaScript Higher Order Functions](https://blog.oshogunle.com/learning-javascript-topic-higher-order-functions-ckdvlkqxs0151jas1fl8tdx13)\n- [IIFE - Immediately Invoked Function Expressions](https://blog.skay.dev/iife-immediately-invoked-function-expressions-ckduje9xv018bn0s19l7ydqqx)\n\n## Arrays\n\n- [Different ways to create Arrays in JavaScript](https://blog.pankaj.pro/different-ways-to-create-arrays-in-javascript-ck6hmrbdv00054ms1s2s6w6i4)\n- [JavaScript Array Methods](https://blog.gyenabubakar.dev/javascript-array-methods-ck8z9mfch01jqmys126svpjmg)\n- [How does in-built Array iterator work?](https://blog.bendtherul.es/how-does-in-built-array-iterator-work-ckciw2lr900d0xas144h5fpwm)\n- [Array.prototype.reduce() in JavaScript](https://blog.everistus.xyz/arrayprototypereduce-in-javascript-ckchxfj49003oc7s1czih27bj)\n- [Sorting arrays in JavaScript](https://blog.everistus.xyz/sorting-arrays-in-javascript-ckceh7doo002u8rs1c4o1azpg)\n- [How I work with arrays](https://hashnode.com/post/how-i-work-with-arrays-ckbub745k00dwkbs1bdtiakeb)\n- [Javascript Array Methods](https://hashnode.com/post/javascript-array-methods-ckbiq3chr015r0ns11tqglykb)\n- [Manipulating Arrays in JavaScript](https://olawanlejoel.hashnode.dev/manipulating-arrays-in-javascript-ckaf19vrl04goc5s1lawvad6t)\n- ['filter' vs 'find': JavaScript array methods](https://vicradon.hashnode.dev/filter-vs-find-javascript-array-methods-ck9dw8hit053zcss1xocvxd9f)\n- [Three methods to get unique values from arrays in ES6](https://blog.everistus.xyz/three-methods-to-get-unique-values-from-arrays-in-es6-ck8dypcjd01a8xjs13gde9xmc)\n- [15 must-know JavaScript array methods in 2020](https://hashnode.com/post/15-must-know-javascript-array-methods-in-2020-ck5cc0zqm01b9qps1dpig0mtv)\n- [A Common Sense Explanation of JavaScript Array Methods](https://solathecoder.hashnode.dev/a-common-sense-explanation-of-javascript-array-methods-ck2gq53m200jjwks1hedlpeb5)\n- [Build your JavaScript Muscles with map, reduce, filter and other array iterators](https://blog.greenroots.info/build-your-javascript-muscles-with-map-reduce-filter-and-other-array-iterators-cjyo22miw000xzss1ydfqveib)\n- [Ways to Empty an Array in JavaScript and the Consequences](https://blog.greenroots.info/ways-to-empty-an-array-in-javascript-and-the-consequences-cjwt45q9d002h2fs1kz5a77a2)\n- [Functional JavaScript: Five ways to calculate an average with array reduce](https://hashnode.com/post/functional-javascript-five-ways-to-calculate-an-average-with-array-reduce-cjwb9rlzz004izts1bym4aw81)\n- [Manipulating Arrays in JavaScript](https://bolajiayodeji.com/manipulating-arrays-in-javascript-cjvuuty3500354js1sba6z6yr)\n- [A Brief Introduction to JavaScript Map, Filter and Reduce Methods](https://blog.nemotivity.xyz/a-brief-introduction-to-javascript-map-filter-and-reduce-methods-ckck648il00df57s122yn0eub)\n- [JavaScript: Arrays, Array-Like objects and Array Methods](https://hashnode.com/post/javascript-arrays-array-like-objects-and-array-methods-ckblab6m8012xbss1wr3s3d5o)\n- [Fundamental of How Arrays Work and Build your Own in JavaScript (Part-1)](https://hashnode.com/post/fundamental-of-how-arrays-work-and-build-your-own-in-javascript-part-1-cjsr7x09y0043cjs2n566dini)\n- [Understanding JavaScript Splice and Slice](https://babysteps.hashnode.dev/understanding-javascript-slice-and-splice-ckd8vl17x00bpqus1cysu10qy)\n- [Basics of JavaScript Reduce Method](https://barnabas.hashnode.dev/basics-of-javascript-reduce-method-ckdk81c6402y7zzs1f13p4x7t)\n- [Understanding JavaScript ArrayMap and ArrayForEach](https://obizim.hashnode.dev/understanding-javascript-arraymap-and-arrayforeach-ckdvf4ii000wrjas13zam6kmd)\n\n## Objects\n\n- [Different ways to create Objects in JavaScript](https://blog.pankaj.pro/different-ways-to-create-objects-in-javascript-ck66i6wqp03ip89s1uw155rb7)\n- [Pick key-value pair from an object in javascript](https://hashnode.com/post/pick-key-value-pair-from-an-object-in-javascript-ck9jvhy08000whds1obh92wzo)\n- [Comparing Values of Objects in JavaScript](https://blog.nemotivity.xyz/comparing-values-of-objects-in-javascript-ckclpxq7d000rots1aff47juh)\n- [Object Destructuring in JavaScript for Beginners](https://blog.nemotivity.xyz/object-destructuring-in-javascript-for-beginners-ckd901fae00n5qus1ebko8j2r)\n- [JS - Primitive Conversion - How objects are turned into primitives](https://deepdive.hashnode.dev/js-primitive-conversion-how-objects-are-turned-into-primitives-ckdejzag8000f2xs1blwx7u92)\n- [Have you seen a Frozen Object?](https://blog.greenroots.info/have-you-seen-a-frozen-object-cjuk1rb65002pc8s1fn0hrk1y)\n- [JavaScript Object Basic to Advance](https://biplab.hashnode.dev/javascript-object-basic-to-advance-ck47dawe5025nu3s1c6ia06qt)\n- [Iterating through JavaScript Objects  -  5 Techniques and Performance Tests](https://bolajiayodeji.com/iterating-through-javascript-objects-5-techniques-and-performance-tests-ck27z4vrq0088d0s1073120ik)\n- [The differences between Object.freeze() vs Const in JavaScript](https://bolajiayodeji.com/the-differences-between-objectfreeze-vs-const-in-javascript-cjvvei43q0011e4s131vmolae)\n- [JavaScript Object References, in Simplistic Way!](https://blog.greenroots.info/javascript-object-references-in-simplistic-way-cjuz5n642002ec3s176ly595x)\n- [An Introduction to JavaScript Getters and Setters 👓](https://blog.nemotivity.xyz/an-introduction-to-javascript-getters-and-setters-ckcq1o3rv003clus11w4chpk6)\n- [A Beginner's Guide to ... in JavaScript](https://lo-victoria.com/a-beginners-guide-to-in-javascript-ckcbxztzb002i1ws17vmefwb3)\n- [Optional Chaining in JavaScript: What it is and How to Use it](https://catalins.tech/optional-chaining-in-javascript-what-is-it-and-how-to-use-it-ckdu6ev7c0090n0s1dwu39yzo)\n\n## ES6 \u0026 more\n\n- [Three methods to get unique values from arrays in ES6](https://blog.everistus.xyz/three-methods-to-get-unique-values-from-arrays-in-es6-ck8dypcjd01a8xjs13gde9xmc)\n- [A Brief Dig Into ES6](https://preetika00.hashnode.dev/a-brief-dig-into-es6-ckdt4w5d800lq9ss1bkeq1pgn)\n- [Introduction to ES6 modules](https://bolajiayodeji.com/introduction-to-es6-modules-49956f580da)\n- [Metaprogramming: An Introduction to JavaScript(ES6) Proxy](https://blog.greenroots.info/metaprogramming-an-introduction-to-javascriptes6-proxy-cjwkk64ly000gvds10db4l034)\n- [Understanding ES6 Classes](https://hashnode.com/post/understanding-es6-classes-cj0dqw75w003mf7537mcwqrxh)\n- [ES2016 Features with simple examples](https://carlillo.hashnode.dev/es2016-features-with-simple-examples-ck60pllu501gr89s1dll9hbsj)\n- [ES2018 Features with simple examples](https://carlillo.hashnode.dev/es2018-features-with-simple-examples-ck6e6stwz00r13ns1r8q17jyu)\n- [Singletons in ES6 – The Good, The Bad, The Ugly](https://wagslane.hashnode.dev/singletons-in-es6-the-good-the-bad-the-ugly-ck9wtp61r01e7nbs1zoxyj3zm)\n- [JavaScript Inheritance Prototype Vs Class](https://biplab.hashnode.dev/javascript-inheritance-prototype-vs-class-ck2ezlgil000ewls1sv1luiw7)\n- [Introduction to Babel and JavaScript Bundlers](https://bolajiayodeji.com/introduction-to-babel-and-javascript-bundlers-ck28x762700143ns1l1jm84ur)\n- [12 ES10 Features in 12 simple examples](https://carlillo.hashnode.dev/12-es10-features-in-12-simple-examples-ck0tp9oaf000r8ys1ph31kf9m)\n- [JavaScript: Why Reflect APIs?](https://blog.greenroots.info/javascript-why-reflect-apis-cjx09kad20006sos1pmumyn38)\n\n## Promises\n\n- [JavaScript: Promises](https://blog.gyenabubakar.dev/javascript-promises-ck2arq86l00nt3ns1s5xtia35)\n- [Converting callbacks to promises](https://hashnode.com/post/converting-callbacks-to-promises-ck0ztcm1e0031i2s1orjzngfi)\n- [Promises, Promise Chain and Async/Await ⏳](https://hashnode.com/post/promises-promise-chain-and-asyncawait-hourglass-with-flowing-sand-cjsmf41pz004nzts12balynb2)\n- [JavaScript: async/await](https://blog.gyenabubakar.dev/javascript-asyncawait-ck6g73ol001cz3cs1cwvep0tx)\n- [ES6: Promisifying The Native Way (with Strophe as example)](https://melvinkoh.me/es6-promisifying-the-native-way-with-strophe-as-example-cjye5dj7u001uvvs1bf89ilow)\n- [5 most important Code Recipes for Asynchronous Code Execution](https://hashnode.com/post/5-most-important-code-recipes-for-asynchronous-code-execution-cjsw5i2ce0007los1haaqla7b)\n\n## Fun Projects\n- [Learn concepts of Vanilla JavaScript while building a Privacy Card Game in 5 easy Steps](https://learnwithmegha.hashnode.dev/learn-concepts-of-vanilla-javascript-while-building-a-privacy-card-game-in-5-easy-steps-ckdefco1n0277xvs189bs9cke)\n- [Writing parsers with Nearley](https://blog.floffah.dev/how-to-write-a-parser-with-nearley-ckchixsby003kbas15e6yb7q6)\n- [Creating a Pixels-To-Rem Converter Using JavaScript](https://redlotusdesignz.hashnode.dev/creating-a-pixels-to-rem-converter-using-javascript-ckdt4y1ch00kxaps1hm76btvv)\n- [Building a Palindrome Checker Using Split, Join and Replace Methods](https://babysteps.hashnode.dev/building-a-palindrome-checker-using-split-join-and-replace-methods-ckdstus2u00kivbs1gph1h2ew)\n- [Vanilla JavaScript Email Validation](https://daily-dev-tips.hashnode.dev/vanilla-javascript-email-validation-ckdsei8ck00woa6s10pts8mxv)\n- [JavaScript Bot with Puppeteer - A Soft Introduction](https://dev.to/ebereplenty/javascript-bot-with-puppeteer-a-soft-introduction-5aei)\n- [Image Upload to Cloudinary with Nodejs and Dotenv](https://dev.to/ebereplenty/image-upload-to-cloudinary-with-nodejs-and-dotenv-4fen)\n\nLet's connect on [Twitter](https://twitter.com/Didicodes) and [Hashnode](https://hashnode.com/@didicodes) :rocket:.\n","created_at":"2024-01-04T17:39:56.299Z","updated_at":"2026-04-07T08:00:30.464Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["`this`","Closures","Scope","Functions","Arrays","ES6 \u0026 more","Objects","Promises","Fun Projects"],"sub_categories":[],"projects_url":"https://awesome.ecosyste.ms/api/v1/lists/didicodes%2Fjavascript-dev-bookmarks/projects"}