[{"data":1,"prerenderedAt":188},["ShallowReactive",2],{"roadmap-javascript":3},{"framework":4,"title":7,"description":8,"model":9},{"slug":5,"name":6},"javascript","JavaScript","JavaScript Learning Roadmap","A guided path through JavaScript for technical interviews — work through each topic from fundamentals to advanced.",{"stages":10,"topicCount":186,"subtopicCount":103,"questionCount":187},[11,64,108,160],{"name":12,"summary":13,"topics":14,"gaps":62,"questionCount":63},"Getting Started","",[15,32],{"slug":16,"name":17,"description":18,"subtopics":19,"questionCount":31},"fundamentals","Fundamentals","Variables, scope, hoisting, data types and type coercion — the bedrock concepts every JavaScript interview starts with.",[20,26],{"path":21,"subtopic":22,"difficulty":23,"questionCount":24,"blogPath":25},"\u002Fjavascript\u002Ffundamentals\u002Fvariables-scope-hoisting","Variables, Scope & Hoisting","easy",33,"\u002Fblog\u002Fjavascript-variables-scope-hoisting",{"path":27,"subtopic":28,"difficulty":29,"questionCount":24,"blogPath":30},"\u002Fjavascript\u002Ffundamentals\u002Fdata-types-coercion","Data Types & Coercion","medium","\u002Fblog\u002Fjavascript-data-types-type-coercion",66,{"slug":33,"name":34,"description":35,"subtopics":36,"questionCount":61},"functions","Functions","Closures, the `this` keyword, arrow vs regular functions and higher-order functions — the most heavily tested JavaScript topic.",[37,42,47,52,57],{"path":38,"subtopic":39,"difficulty":29,"questionCount":40,"blogPath":41},"\u002Fjavascript\u002Ffunctions\u002Fclosures","Closures",34,"\u002Fblog\u002Fjavascript-closures-explained-patterns",{"path":43,"subtopic":44,"difficulty":45,"questionCount":24,"blogPath":46},"\u002Fjavascript\u002Ffunctions\u002Fthis-keyword","The this Keyword","hard","\u002Fblog\u002Fjavascript-this-keyword-binding-guide",{"path":48,"subtopic":49,"difficulty":29,"questionCount":50,"blogPath":51},"\u002Fjavascript\u002Ffunctions\u002Fhigher-order-functions","Higher-Order Functions",31,"\u002Fblog\u002Fjavascript-higher-order-functions",{"path":53,"subtopic":54,"difficulty":29,"questionCount":55,"blogPath":56},"\u002Fjavascript\u002Ffunctions\u002Ffunction-types-parameters","Function Types & Parameters",30,"\u002Fblog\u002Fjavascript-function-types-parameters",{"path":58,"subtopic":59,"difficulty":29,"questionCount":55,"blogPath":60},"\u002Fjavascript\u002Ffunctions\u002Fgenerators-iterators","Generators & Iterators","\u002Fblog\u002Fjavascript-generators-iterators-explained",158,[],224,{"name":65,"summary":13,"topics":66,"gaps":106,"questionCount":107},"Building Core Skills",[67,81],{"slug":68,"name":69,"description":70,"subtopics":71,"questionCount":80},"async","Asynchronous JavaScript","Callbacks, promises, async\u002Fawait and the event loop — how JavaScript handles non-blocking work behind the scenes.",[72,76],{"path":73,"subtopic":74,"difficulty":29,"questionCount":40,"blogPath":75},"\u002Fjavascript\u002Fasync\u002Fpromises","Promises & async\u002Fawait","\u002Fblog\u002Fjavascript-promises-async-await",{"path":77,"subtopic":78,"difficulty":45,"questionCount":24,"blogPath":79},"\u002Fjavascript\u002Fasync\u002Fevent-loop","The Event Loop","\u002Fblog\u002Fjavascript-event-loop-explained",67,{"slug":82,"name":83,"description":84,"subtopics":85,"questionCount":105},"objects","Objects & Prototypes","Object creation and properties, the prototype chain, prototypal inheritance and how the new operator builds objects — the heart of JavaScript's object model.",[86,90,95,100],{"path":87,"subtopic":88,"difficulty":29,"questionCount":55,"blogPath":89},"\u002Fjavascript\u002Fobjects\u002Fobjects-properties","Objects & Properties","\u002Fblog\u002Fjavascript-objects-properties-descriptors",{"path":91,"subtopic":92,"difficulty":45,"questionCount":93,"blogPath":94},"\u002Fjavascript\u002Fobjects\u002Fprototypes-chain","Prototypes & the Prototype Chain",29,"\u002Fblog\u002Fjavascript-prototypes-prototype-chain-explained",{"path":96,"subtopic":97,"difficulty":45,"questionCount":98,"blogPath":99},"\u002Fjavascript\u002Fobjects\u002Fprototypal-inheritance","Prototypal Inheritance",26,"\u002Fblog\u002Fjavascript-prototypal-inheritance-guide",{"path":101,"subtopic":102,"difficulty":29,"questionCount":103,"blogPath":104},"\u002Fjavascript\u002Fobjects\u002Fnew-constructors","The new Operator & Constructors",25,"\u002Fblog\u002Fjavascript-new-operator-constructor-functions",110,[],177,{"name":109,"summary":13,"topics":110,"gaps":158,"questionCount":159},"Going Deeper",[111,135],{"slug":112,"name":113,"description":114,"subtopics":115,"questionCount":134},"classes","Classes & OOP","ES6 class syntax, inheritance with extends and super, static members, private fields, getters\u002Fsetters and mixins — object-oriented JavaScript built on prototypes.",[116,120,125,129],{"path":117,"subtopic":118,"difficulty":29,"questionCount":98,"blogPath":119},"\u002Fjavascript\u002Fclasses\u002Fclass-syntax","Class Syntax & Methods","\u002Fblog\u002Fjavascript-class-syntax-methods",{"path":121,"subtopic":122,"difficulty":45,"questionCount":123,"blogPath":124},"\u002Fjavascript\u002Fclasses\u002Fclass-inheritance","Inheritance with extends & super",24,"\u002Fblog\u002Fjavascript-class-inheritance-extends-super",{"path":126,"subtopic":127,"difficulty":45,"questionCount":123,"blogPath":128},"\u002Fjavascript\u002Fclasses\u002Fstatic-private","Static & Private Members","\u002Fblog\u002Fjavascript-static-private-class-members",{"path":130,"subtopic":131,"difficulty":45,"questionCount":132,"blogPath":133},"\u002Fjavascript\u002Fclasses\u002Fmixins-composition","Mixins & Composition",23,"\u002Fblog\u002Fjavascript-mixins-composition-explained",97,{"slug":136,"name":137,"description":138,"subtopics":139,"questionCount":157},"arrays","Arrays & Iteration","Creating and iterating arrays with map, filter and reduce, mutation versus immutability, searching and sorting, and array destructuring and spread — the everyday tools for working with collections in JavaScript.",[140,145,149,153],{"path":141,"subtopic":142,"difficulty":29,"questionCount":143,"blogPath":144},"\u002Fjavascript\u002Farrays\u002Farray-methods","Array Methods",32,"\u002Fblog\u002Fjavascript-array-methods-map-filter-reduce",{"path":146,"subtopic":147,"difficulty":29,"questionCount":50,"blogPath":148},"\u002Fjavascript\u002Farrays\u002Fmutating-vs-nonmutating","Mutating vs Non-Mutating","\u002Fblog\u002Fjavascript-mutating-vs-nonmutating-arrays",{"path":150,"subtopic":151,"difficulty":29,"questionCount":50,"blogPath":152},"\u002Fjavascript\u002Farrays\u002Fsearching-sorting","Searching & Sorting","\u002Fblog\u002Fjavascript-array-searching-sorting",{"path":154,"subtopic":155,"difficulty":29,"questionCount":50,"blogPath":156},"\u002Fjavascript\u002Farrays\u002Fdestructuring-spread","Array Destructuring & Spread","\u002Fblog\u002Fjavascript-array-destructuring-spread",125,[],222,{"name":161,"summary":13,"topics":162,"gaps":185,"questionCount":184},"Advanced Topics",[163],{"slug":164,"name":165,"description":166,"subtopics":167,"questionCount":184},"modern","Modern JavaScript (ES6+)","The ergonomic features that define modern JavaScript — destructuring and spread\u002Frest, optional chaining and nullish coalescing, template literals and tagged templates, and Symbols for unique keys and protocol hooks.",[168,172,176,180],{"path":169,"subtopic":170,"difficulty":29,"questionCount":143,"blogPath":171},"\u002Fjavascript\u002Fmodern\u002Fdestructuring-spread-rest","Destructuring, Spread & Rest","\u002Fblog\u002Fjavascript-destructuring-spread-rest",{"path":173,"subtopic":174,"difficulty":29,"questionCount":55,"blogPath":175},"\u002Fjavascript\u002Fmodern\u002Foptional-chaining-nullish","Optional Chaining & Nullish Coalescing","\u002Fblog\u002Fjavascript-optional-chaining-nullish-coalescing",{"path":177,"subtopic":178,"difficulty":29,"questionCount":55,"blogPath":179},"\u002Fjavascript\u002Fmodern\u002Ftemplate-literals","Template Literals & Tagged Templates","\u002Fblog\u002Fjavascript-template-literals-tagged-templates",{"path":181,"subtopic":182,"difficulty":29,"questionCount":93,"blogPath":183},"\u002Fjavascript\u002Fmodern\u002Fsymbols","Symbols","\u002Fblog\u002Fjavascript-symbols-explained-guide",121,[],7,744,1782244083099]