Skip to main content

index

docs/
└── tutorials/
└── javascript/
β”œβ”€β”€ index.mdx
β”‚
β”œβ”€β”€ 01-getting-started/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ what-is-javascript.mdx
β”‚ β”œβ”€β”€ history-of-javascript.mdx
β”‚ β”œβ”€β”€ javascript-vs-java.mdx
β”‚ β”œβ”€β”€ javascript-vs-typescript.mdx
β”‚ β”œβ”€β”€ how-javascript-works.mdx
β”‚ β”œβ”€β”€ javascript-engines.mdx
β”‚ β”œβ”€β”€ runtime-environments.mdx
β”‚ β”œβ”€β”€ browser-vs-nodejs.mdx
β”‚ β”œβ”€β”€ setting-up-development-environment.mdx
β”‚ β”œβ”€β”€ using-browser-console.mdx
β”‚ β”œβ”€β”€ using-nodejs.mdx
β”‚ └── your-first-javascript-program.mdx
β”‚
β”œβ”€β”€ 02-fundamentals/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ syntax-and-statements.mdx
β”‚ β”œβ”€β”€ comments.mdx
β”‚ β”œβ”€β”€ variables.mdx
β”‚ β”œβ”€β”€ var-let-const.mdx
β”‚ β”œβ”€β”€ naming-conventions.mdx
β”‚ β”œβ”€β”€ strict-mode.mdx
β”‚ β”œβ”€β”€ expressions-and-statements.mdx
β”‚ β”œβ”€β”€ semicolons-and-automatic-semicolon-insertion.mdx
β”‚ β”œβ”€β”€ code-blocks.mdx
β”‚ └── debugging-first-program.mdx
β”‚
β”œβ”€β”€ 03-data-types/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ primitive-and-reference-types.mdx
β”‚ β”œβ”€β”€ numbers.mdx
β”‚ β”œβ”€β”€ strings.mdx
β”‚ β”œβ”€β”€ booleans.mdx
β”‚ β”œβ”€β”€ undefined.mdx
β”‚ β”œβ”€β”€ null.mdx
β”‚ β”œβ”€β”€ bigint.mdx
β”‚ β”œβ”€β”€ symbols.mdx
β”‚ β”œβ”€β”€ objects.mdx
β”‚ β”œβ”€β”€ arrays.mdx
β”‚ β”œβ”€β”€ typeof-operator.mdx
β”‚ β”œβ”€β”€ type-coercion.mdx
β”‚ β”œβ”€β”€ type-conversion.mdx
β”‚ β”œβ”€β”€ truthy-and-falsy-values.mdx
β”‚ β”œβ”€β”€ nan-and-infinity.mdx
β”‚ └── structured-clone.mdx
β”‚
β”œβ”€β”€ 04-operators/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ arithmetic-operators.mdx
β”‚ β”œβ”€β”€ assignment-operators.mdx
β”‚ β”œβ”€β”€ comparison-operators.mdx
β”‚ β”œβ”€β”€ strict-and-loose-equality.mdx
β”‚ β”œβ”€β”€ logical-operators.mdx
β”‚ β”œβ”€β”€ short-circuit-evaluation.mdx
β”‚ β”œβ”€β”€ nullish-coalescing.mdx
β”‚ β”œβ”€β”€ optional-chaining.mdx
β”‚ β”œβ”€β”€ ternary-operator.mdx
β”‚ β”œβ”€β”€ bitwise-operators.mdx
β”‚ β”œβ”€β”€ typeof-instanceof.mdx
β”‚ β”œβ”€β”€ in-operator.mdx
β”‚ β”œβ”€β”€ delete-operator.mdx
β”‚ β”œβ”€β”€ spread-syntax.mdx
β”‚ β”œβ”€β”€ rest-parameters.mdx
β”‚ β”œβ”€β”€ operator-precedence.mdx
β”‚ └── destructuring.mdx
β”‚
β”œβ”€β”€ 05-control-flow/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ if-else.mdx
β”‚ β”œβ”€β”€ else-if.mdx
β”‚ β”œβ”€β”€ switch.mdx
β”‚ β”œβ”€β”€ conditional-operator.mdx
β”‚ β”œβ”€β”€ for-loop.mdx
β”‚ β”œβ”€β”€ while-loop.mdx
β”‚ β”œβ”€β”€ do-while-loop.mdx
β”‚ β”œβ”€β”€ for-of-loop.mdx
β”‚ β”œβ”€β”€ for-in-loop.mdx
β”‚ β”œβ”€β”€ break-and-continue.mdx
β”‚ β”œβ”€β”€ nested-loops.mdx
β”‚ └── choosing-the-right-loop.mdx
β”‚
β”œβ”€β”€ 06-functions/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ function-declarations.mdx
β”‚ β”œβ”€β”€ function-expressions.mdx
β”‚ β”œβ”€β”€ arrow-functions.mdx
β”‚ β”œβ”€β”€ parameters-and-arguments.mdx
β”‚ β”œβ”€β”€ default-parameters.mdx
β”‚ β”œβ”€β”€ return-values.mdx
β”‚ β”œβ”€β”€ callbacks.mdx
β”‚ β”œβ”€β”€ higher-order-functions.mdx
β”‚ β”œβ”€β”€ pure-functions.mdx
β”‚ β”œβ”€β”€ first-class-functions.mdx
β”‚ β”œβ”€β”€ recursion.mdx
β”‚ β”œβ”€β”€ closures.mdx
β”‚ β”œβ”€β”€ lexical-scope.mdx
β”‚ β”œβ”€β”€ function-scope.mdx
β”‚ β”œβ”€β”€ rest-parameters.mdx
β”‚ β”œβ”€β”€ this-keyword.mdx
β”‚ β”œβ”€β”€ call-apply-bind.mdx
β”‚ β”œβ”€β”€ arguments-object.mdx
β”‚ └── function-best-practices.mdx
β”‚
β”œβ”€β”€ 07-arrays/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ creating-arrays.mdx
β”‚ β”œβ”€β”€ indexing-and-length.mdx
β”‚ β”œβ”€β”€ adding-and-removing-elements.mdx
β”‚ β”œβ”€β”€ array-destructuring.mdx
β”‚ β”œβ”€β”€ array-iteration.mdx
β”‚ β”œβ”€β”€ forEach.mdx
β”‚ β”œβ”€β”€ map.mdx
β”‚ β”œβ”€β”€ filter.mdx
β”‚ β”œβ”€β”€ reduce.mdx
β”‚ β”œβ”€β”€ find-and-findIndex.mdx
β”‚ β”œβ”€β”€ some-and-every.mdx
β”‚ β”œβ”€β”€ includes-and-indexOf.mdx
β”‚ β”œβ”€β”€ slice-and-splice.mdx
β”‚ β”œβ”€β”€ sort-and-reverse.mdx
β”‚ β”œβ”€β”€ flat-and-flatMap.mdx
β”‚ β”œβ”€β”€ array-copying.mdx
β”‚ β”œβ”€β”€ immutable-array-updates.mdx
β”‚ β”œβ”€β”€ multidimensional-arrays.mdx
β”‚ └── array-methods-reference.mdx
β”‚
β”œβ”€β”€ 08-objects/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ object-literals.mdx
β”‚ β”œβ”€β”€ properties-and-methods.mdx
β”‚ β”œβ”€β”€ accessing-properties.mdx
β”‚ β”œβ”€β”€ computed-property-names.mdx
β”‚ β”œβ”€β”€ object-destructuring.mdx
β”‚ β”œβ”€β”€ object-method-shorthand.mdx
β”‚ β”œβ”€β”€ object-keys-values-entries.mdx
β”‚ β”œβ”€β”€ object-assign.mdx
β”‚ β”œβ”€β”€ object-freeze-seal.mdx
β”‚ β”œβ”€β”€ property-descriptors.mdx
β”‚ β”œβ”€β”€ getters-and-setters.mdx
β”‚ β”œβ”€β”€ object-references.mdx
β”‚ β”œβ”€β”€ shallow-vs-deep-copy.mdx
β”‚ β”œβ”€β”€ optional-chaining.mdx
β”‚ └── object-best-practices.mdx
β”‚
β”œβ”€β”€ 09-strings-and-numbers/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ template-literals.mdx
β”‚ β”œβ”€β”€ string-methods.mdx
β”‚ β”œβ”€β”€ substring-slice.mdx
β”‚ β”œβ”€β”€ string-search.mdx
β”‚ β”œβ”€β”€ string-replacement.mdx
β”‚ β”œβ”€β”€ regular-expressions.mdx
β”‚ β”œβ”€β”€ regex-patterns.mdx
β”‚ β”œβ”€β”€ regex-flags.mdx
β”‚ β”œβ”€β”€ number-methods.mdx
β”‚ β”œβ”€β”€ math-object.mdx
β”‚ β”œβ”€β”€ rounding-and-precision.mdx
β”‚ β”œβ”€β”€ floating-point-errors.mdx
β”‚ β”œβ”€β”€ bigInt-arithmetic.mdx
β”‚ β”œβ”€β”€ international-number-formatting.mdx
β”‚ └── international-date-number-formatting.mdx
β”‚
β”œβ”€β”€ 10-date-and-time/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ date-object.mdx
β”‚ β”œβ”€β”€ creating-dates.mdx
β”‚ β”œβ”€β”€ getting-and-setting-date-parts.mdx
β”‚ β”œβ”€β”€ timestamps.mdx
β”‚ β”œβ”€β”€ date-comparisons.mdx
β”‚ β”œβ”€β”€ timezones.mdx
β”‚ β”œβ”€β”€ utc-and-local-time.mdx
β”‚ β”œβ”€β”€ intl-date-time-format.mdx
β”‚ └── date-best-practices.mdx
β”‚
β”œβ”€β”€ 11-error-handling/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ syntax-errors.mdx
β”‚ β”œβ”€β”€ runtime-errors.mdx
β”‚ β”œβ”€β”€ logical-errors.mdx
β”‚ β”œβ”€β”€ try-catch.mdx
β”‚ β”œβ”€β”€ finally.mdx
β”‚ β”œβ”€β”€ throw-statement.mdx
β”‚ β”œβ”€β”€ error-object.mdx
β”‚ β”œβ”€β”€ custom-errors.mdx
β”‚ β”œβ”€β”€ error-cause.mdx
β”‚ β”œβ”€β”€ promise-errors.mdx
β”‚ └── error-handling-strategies.mdx
β”‚
β”œβ”€β”€ 12-dom/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ dom-introduction.mdx
β”‚ β”œβ”€β”€ document-object.mdx
β”‚ β”œβ”€β”€ selecting-elements.mdx
β”‚ β”œβ”€β”€ querySelector.mdx
β”‚ β”œβ”€β”€ querySelectorAll.mdx
β”‚ β”œβ”€β”€ traversing-the-dom.mdx
β”‚ β”œβ”€β”€ creating-elements.mdx
β”‚ β”œβ”€β”€ updating-text-and-html.mdx
β”‚ β”œβ”€β”€ changing-attributes.mdx
β”‚ β”œβ”€β”€ classList.mdx
β”‚ β”œβ”€β”€ inline-styles.mdx
β”‚ β”œβ”€β”€ inserting-and-removing-elements.mdx
β”‚ β”œβ”€β”€ document-fragments.mdx
β”‚ β”œβ”€β”€ data-attributes.mdx
β”‚ β”œβ”€β”€ dom-collections.mdx
β”‚ └── safe-dom-manipulation.mdx
β”‚
β”œβ”€β”€ 13-events/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ event-introduction.mdx
β”‚ β”œβ”€β”€ addEventListener.mdx
β”‚ β”œβ”€β”€ mouse-events.mdx
β”‚ β”œβ”€β”€ keyboard-events.mdx
β”‚ β”œβ”€β”€ input-events.mdx
β”‚ β”œβ”€β”€ form-events.mdx
β”‚ β”œβ”€β”€ submit-events.mdx
β”‚ β”œβ”€β”€ event-object.mdx
β”‚ β”œβ”€β”€ event-bubbling.mdx
β”‚ β”œβ”€β”€ event-capturing.mdx
β”‚ β”œβ”€β”€ event-delegation.mdx
β”‚ β”œβ”€β”€ preventDefault.mdx
β”‚ β”œβ”€β”€ stopPropagation.mdx
β”‚ β”œβ”€β”€ custom-events.mdx
β”‚ └── accessible-event-handling.mdx
β”‚
β”œβ”€β”€ 14-asynchronous-javascript/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ synchronous-vs-asynchronous.mdx
β”‚ β”œβ”€β”€ call-stack.mdx
β”‚ β”œβ”€β”€ runtime-and-task-queues.mdx
β”‚ β”œβ”€β”€ event-loop.mdx
β”‚ β”œβ”€β”€ setTimeout-and-setInterval.mdx
β”‚ β”œβ”€β”€ callbacks-and-callback-hell.mdx
β”‚ β”œβ”€β”€ promises.mdx
β”‚ β”œβ”€β”€ promise-states.mdx
β”‚ β”œβ”€β”€ then-catch-finally.mdx
β”‚ β”œβ”€β”€ promise-chaining.mdx
β”‚ β”œβ”€β”€ Promise-all.mdx
β”‚ β”œβ”€β”€ Promise-allSettled.mdx
β”‚ β”œβ”€β”€ Promise-race.mdx
β”‚ β”œβ”€β”€ Promise-any.mdx
β”‚ β”œβ”€β”€ async-functions.mdx
β”‚ β”œβ”€β”€ await.mdx
β”‚ β”œβ”€β”€ asynchronous-error-handling.mdx
β”‚ β”œβ”€β”€ concurrent-vs-sequential.mdx
β”‚ β”œβ”€β”€ abortController.mdx
β”‚ └── asynchronous-best-practices.mdx
β”‚
β”œβ”€β”€ 15-fetch-and-apis/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ http-basics.mdx
β”‚ β”œβ”€β”€ fetch-api.mdx
β”‚ β”œβ”€β”€ http-methods.mdx
β”‚ β”œβ”€β”€ request-headers.mdx
β”‚ β”œβ”€β”€ response-status-codes.mdx
β”‚ β”œβ”€β”€ json-data.mdx
β”‚ β”œβ”€β”€ query-parameters.mdx
β”‚ β”œβ”€β”€ form-data.mdx
β”‚ β”œβ”€β”€ cors.mdx
β”‚ β”œβ”€β”€ api-error-handling.mdx
β”‚ β”œβ”€β”€ request-cancellation.mdx
β”‚ β”œβ”€β”€ retry-and-backoff.mdx
β”‚ β”œβ”€β”€ pagination.mdx
β”‚ β”œβ”€β”€ rate-limits.mdx
β”‚ └── api-integration-project.mdx
β”‚
β”œβ”€β”€ 16-modules/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ why-modules.mdx
β”‚ β”œβ”€β”€ named-exports.mdx
β”‚ β”œβ”€β”€ default-exports.mdx
β”‚ β”œβ”€β”€ named-imports.mdx
β”‚ β”œβ”€β”€ dynamic-imports.mdx
β”‚ β”œβ”€β”€ module-scope.mdx
β”‚ β”œβ”€β”€ module-resolution.mdx
β”‚ β”œβ”€β”€ esm-vs-commonjs.mdx
β”‚ β”œβ”€β”€ package-json.mdx
β”‚ β”œβ”€β”€ npm-basics.mdx
β”‚ β”œβ”€β”€ dependency-management.mdx
β”‚ └── project-module-structure.mdx
β”‚
β”œβ”€β”€ 17-classes-and-oop/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ object-oriented-programming.mdx
β”‚ β”œβ”€β”€ constructor-functions.mdx
β”‚ β”œβ”€β”€ prototypes.mdx
β”‚ β”œβ”€β”€ prototype-chain.mdx
β”‚ β”œβ”€β”€ class-syntax.mdx
β”‚ β”œβ”€β”€ constructors.mdx
β”‚ β”œβ”€β”€ instance-methods.mdx
β”‚ β”œβ”€β”€ static-methods.mdx
β”‚ β”œβ”€β”€ inheritance.mdx
β”‚ β”œβ”€β”€ super-keyword.mdx
β”‚ β”œβ”€β”€ private-fields.mdx
β”‚ β”œβ”€β”€ getters-and-setters.mdx
β”‚ β”œβ”€β”€ instanceof.mdx
β”‚ β”œβ”€β”€ composition-vs-inheritance.mdx
β”‚ └── oop-design-principles.mdx
β”‚
β”œβ”€β”€ 18-iterators-and-generators/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ iterable-protocol.mdx
β”‚ β”œβ”€β”€ iterator-protocol.mdx
β”‚ β”œβ”€β”€ custom-iterators.mdx
β”‚ β”œβ”€β”€ generator-functions.mdx
β”‚ β”œβ”€β”€ yield-keyword.mdx
β”‚ β”œβ”€β”€ async-iterators.mdx
β”‚ └── async-generators.mdx
β”‚
β”œβ”€β”€ 19-advanced-javascript/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ execution-context.mdx
β”‚ β”œβ”€β”€ lexical-environment.mdx
β”‚ β”œβ”€β”€ hoisting.mdx
β”‚ β”œβ”€β”€ temporal-dead-zone.mdx
β”‚ β”œβ”€β”€ closures-deep-dive.mdx
β”‚ β”œβ”€β”€ this-binding.mdx
β”‚ β”œβ”€β”€ prototype-internals.mdx
β”‚ β”œβ”€β”€ property-descriptors.mdx
β”‚ β”œβ”€β”€ symbols-and-well-known-symbols.mdx
β”‚ β”œβ”€β”€ proxies.mdx
β”‚ β”œβ”€β”€ reflection.mdx
β”‚ β”œβ”€β”€ weakmap-and-weakset.mdx
β”‚ β”œβ”€β”€ map-and-set.mdx
β”‚ β”œβ”€β”€ garbage-collection.mdx
β”‚ β”œβ”€β”€ memory-management.mdx
β”‚ β”œβ”€β”€ tail-call-concepts.mdx
β”‚ └── metaprogramming.mdx
β”‚
β”œβ”€β”€ 20-browser-apis/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ window-and-globalThis.mdx
β”‚ β”œβ”€β”€ localStorage.mdx
β”‚ β”œβ”€β”€ sessionStorage.mdx
β”‚ β”œβ”€β”€ cookies.mdx
β”‚ β”œβ”€β”€ url-and-urlSearchParams.mdx
β”‚ β”œβ”€β”€ history-api.mdx
β”‚ β”œβ”€β”€ location-api.mdx
β”‚ β”œβ”€β”€ clipboard-api.mdx
β”‚ β”œβ”€β”€ drag-and-drop-api.mdx
β”‚ β”œβ”€β”€ intersection-observer.mdx
β”‚ β”œβ”€β”€ mutation-observer.mdx
β”‚ β”œβ”€β”€ resize-observer.mdx
β”‚ β”œβ”€β”€ web-workers.mdx
β”‚ β”œβ”€β”€ service-workers.mdx
β”‚ β”œβ”€β”€ geolocation-api.mdx
β”‚ β”œβ”€β”€ notifications-api.mdx
β”‚ β”œβ”€β”€ web-sockets.mdx
β”‚ β”œβ”€β”€ server-sent-events.mdx
β”‚ └── browser-api-security.mdx
β”‚
β”œβ”€β”€ 21-nodejs/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ what-is-nodejs.mdx
β”‚ β”œβ”€β”€ nodejs-vs-browser.mdx
β”‚ β”œβ”€β”€ installing-nodejs.mdx
β”‚ β”œβ”€β”€ node-runtime.mdx
β”‚ β”œβ”€β”€ node-modules.mdx
β”‚ β”œβ”€β”€ file-system.mdx
β”‚ β”œβ”€β”€ path-module.mdx
β”‚ β”œβ”€β”€ process-and-environment-variables.mdx
β”‚ β”œβ”€β”€ events-module.mdx
β”‚ β”œβ”€β”€ buffers.mdx
β”‚ β”œβ”€β”€ streams.mdx
β”‚ β”œβ”€β”€ http-server.mdx
β”‚ β”œβ”€β”€ npm-scripts.mdx
β”‚ β”œβ”€β”€ package-lock.mdx
β”‚ β”œβ”€β”€ environment-configuration.mdx
β”‚ └── graceful-shutdown.mdx
β”‚
β”œβ”€β”€ 22-javascript-security/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ security-fundamentals.mdx
β”‚ β”œβ”€β”€ xss-prevention.mdx
β”‚ β”œβ”€β”€ safe-dom-updates.mdx
β”‚ β”œβ”€β”€ eval-security-risks.mdx
β”‚ β”œβ”€β”€ injection-attacks.mdx
β”‚ β”œβ”€β”€ csrf-basics.mdx
β”‚ β”œβ”€β”€ secure-cookie-basics.mdx
β”‚ β”œβ”€β”€ secrets-and-environment-variables.mdx
β”‚ β”œβ”€β”€ dependency-security.mdx
β”‚ β”œβ”€β”€ prototype-pollution.mdx
β”‚ └── security-best-practices.mdx
β”‚
β”œβ”€β”€ 23-testing-and-debugging/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ debugging-fundamentals.mdx
β”‚ β”œβ”€β”€ browser-breakpoints.mdx
β”‚ β”œβ”€β”€ source-maps.mdx
β”‚ β”œβ”€β”€ logging-best-practices.mdx
β”‚ β”œβ”€β”€ unit-testing.mdx
β”‚ β”œβ”€β”€ integration-testing.mdx
β”‚ β”œβ”€β”€ end-to-end-testing.mdx
β”‚ β”œβ”€β”€ test-driven-development.mdx
β”‚ β”œβ”€β”€ jest-basics.mdx
β”‚ β”œβ”€β”€ vitest-basics.mdx
β”‚ β”œβ”€β”€ mocking-and-spies.mdx
β”‚ β”œβ”€β”€ testing-async-code.mdx
β”‚ β”œβ”€β”€ code-coverage.mdx
β”‚ └── debugging-strategies.mdx
β”‚
β”œβ”€β”€ 24-tooling-and-quality/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ npm-and-package-managers.mdx
β”‚ β”œβ”€β”€ eslint.mdx
β”‚ β”œβ”€β”€ prettier.mdx
β”‚ β”œβ”€β”€ editorconfig.mdx
β”‚ β”œβ”€β”€ bundlers-overview.mdx
β”‚ β”œβ”€β”€ vite.mdx
β”‚ β”œβ”€β”€ webpack-overview.mdx
β”‚ β”œβ”€β”€ babel-overview.mdx
β”‚ β”œβ”€β”€ environment-configuration.mdx
β”‚ β”œβ”€β”€ source-maps.mdx
β”‚ β”œβ”€β”€ tree-shaking.mdx
β”‚ β”œβ”€β”€ code-splitting.mdx
β”‚ β”œβ”€β”€ continuous-integration.mdx
β”‚ └── production-builds.mdx
β”‚
β”œβ”€β”€ 25-performance/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ javascript-performance-basics.mdx
β”‚ β”œβ”€β”€ profiling-javascript.mdx
β”‚ β”œβ”€β”€ algorithmic-complexity.mdx
β”‚ β”œβ”€β”€ big-o-notation.mdx
β”‚ β”œβ”€β”€ avoiding-unnecessary-work.mdx
β”‚ β”œβ”€β”€ efficient-dom-updates.mdx
β”‚ β”œβ”€β”€ debouncing.mdx
β”‚ β”œβ”€β”€ throttling.mdx
β”‚ β”œβ”€β”€ lazy-loading-modules.mdx
β”‚ β”œβ”€β”€ memory-leaks.mdx
β”‚ β”œβ”€β”€ optimizing-event-handlers.mdx
β”‚ β”œβ”€β”€ web-workers-performance.mdx
β”‚ └── performance-best-practices.mdx
β”‚
β”œβ”€β”€ 26-design-patterns/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ modular-pattern.mdx
β”‚ β”œβ”€β”€ factory-pattern.mdx
β”‚ β”œβ”€β”€ observer-pattern.mdx
β”‚ β”œβ”€β”€ pub-sub-pattern.mdx
β”‚ β”œβ”€β”€ singleton-pattern.mdx
β”‚ β”œβ”€β”€ strategy-pattern.mdx
β”‚ β”œβ”€β”€ adapter-pattern.mdx
β”‚ β”œβ”€β”€ dependency-injection.mdx
β”‚ β”œβ”€β”€ composition-pattern.mdx
β”‚ └── choosing-design-patterns.mdx
β”‚
β”œβ”€β”€ 27-functional-programming/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ functional-programming-basics.mdx
β”‚ β”œβ”€β”€ pure-functions.mdx
β”‚ β”œβ”€β”€ immutability.mdx
β”‚ β”œβ”€β”€ map-filter-reduce.mdx
β”‚ β”œβ”€β”€ function-composition.mdx
β”‚ β”œβ”€β”€ currying.mdx
β”‚ β”œβ”€β”€ partial-application.mdx
β”‚ β”œβ”€β”€ closures-and-state.mdx
β”‚ └── functional-programming-patterns.mdx
β”‚
β”œβ”€β”€ 28-typescript-readiness/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ why-typescript.mdx
β”‚ β”œβ”€β”€ javascript-type-limitations.mdx
β”‚ β”œβ”€β”€ type-safety-concepts.mdx
β”‚ β”œβ”€β”€ jsdoc-types.mdx
β”‚ β”œβ”€β”€ checking-javascript-with-jsdoc.mdx
β”‚ β”œβ”€β”€ migrating-js-to-typescript.mdx
β”‚ └── javascript-vs-typescript-project.mdx
β”‚
β”œβ”€β”€ 29-projects/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ beginner/
β”‚ β”‚ β”œβ”€β”€ number-guessing-game.mdx
β”‚ β”‚ β”œβ”€β”€ calculator.mdx
β”‚ β”‚ β”œβ”€β”€ unit-converter.mdx
β”‚ β”‚ β”œβ”€β”€ digital-clock.mdx
β”‚ β”‚ β”œβ”€β”€ countdown-timer.mdx
β”‚ β”‚ └── random-quote-generator.mdx
β”‚ β”œβ”€β”€ intermediate/
β”‚ β”‚ β”œβ”€β”€ todo-app.mdx
β”‚ β”‚ β”œβ”€β”€ quiz-app.mdx
β”‚ β”‚ β”œβ”€β”€ weather-dashboard.mdx
β”‚ β”‚ β”œβ”€β”€ expense-tracker.mdx
β”‚ β”‚ β”œβ”€β”€ github-profile-finder.mdx
β”‚ β”‚ β”œβ”€β”€ movie-search-app.mdx
β”‚ β”‚ └── shopping-cart.mdx
β”‚ └── advanced/
β”‚ β”œβ”€β”€ kanban-board.mdx
β”‚ β”œβ”€β”€ markdown-editor.mdx
β”‚ β”œβ”€β”€ realtime-chat.mdx
β”‚ β”œβ”€β”€ analytics-dashboard.mdx
β”‚ β”œβ”€β”€ offline-first-app.mdx
β”‚ β”œβ”€β”€ api-client-library.mdx
β”‚ └── final-javascript-capstone.mdx
β”‚
β”œβ”€β”€ 30-coding-challenges/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ beginner/
β”‚ β”œβ”€β”€ intermediate/
β”‚ β”œβ”€β”€ advanced/
β”‚ β”œβ”€β”€ arrays/
β”‚ β”œβ”€β”€ strings/
β”‚ β”œβ”€β”€ objects/
β”‚ β”œβ”€β”€ functions/
β”‚ β”œβ”€β”€ recursion/
β”‚ └── asynchronous-javascript/
β”‚
β”œβ”€β”€ 31-quizzes/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ fundamentals-quiz.mdx
β”‚ β”œβ”€β”€ data-types-quiz.mdx
β”‚ β”œβ”€β”€ operators-quiz.mdx
β”‚ β”œβ”€β”€ functions-quiz.mdx
β”‚ β”œβ”€β”€ arrays-quiz.mdx
β”‚ β”œβ”€β”€ objects-quiz.mdx
β”‚ β”œβ”€β”€ dom-quiz.mdx
β”‚ β”œβ”€β”€ async-javascript-quiz.mdx
β”‚ β”œβ”€β”€ modules-quiz.mdx
β”‚ β”œβ”€β”€ advanced-javascript-quiz.mdx
β”‚ └── final-javascript-quiz.mdx
β”‚
β”œβ”€β”€ 32-interview-preparation/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ beginner-questions.mdx
β”‚ β”œβ”€β”€ variables-and-scope.mdx
β”‚ β”œβ”€β”€ closures-and-hoisting.mdx
β”‚ β”œβ”€β”€ this-and-prototypes.mdx
β”‚ β”œβ”€β”€ arrays-and-objects.mdx
β”‚ β”œβ”€β”€ asynchronous-javascript.mdx
β”‚ β”œβ”€β”€ promises-and-event-loop.mdx
β”‚ β”œβ”€β”€ dom-and-browser-apis.mdx
β”‚ β”œβ”€β”€ modules-and-tooling.mdx
β”‚ β”œβ”€β”€ performance-and-security.mdx
β”‚ β”œβ”€β”€ coding-interview-problems.mdx
β”‚ └── frontend-interview-javascript.mdx
β”‚
β”œβ”€β”€ 33-reference/
β”‚ β”œβ”€β”€ index.mdx
β”‚ β”œβ”€β”€ global-objects.mdx
β”‚ β”œβ”€β”€ array-methods.mdx
β”‚ β”œβ”€β”€ string-methods.mdx
β”‚ β”œβ”€β”€ number-methods.mdx
β”‚ β”œβ”€β”€ object-methods.mdx
β”‚ β”œβ”€β”€ map-and-set.mdx
β”‚ β”œβ”€β”€ date-and-time.mdx
β”‚ β”œβ”€β”€ operators.mdx
β”‚ β”œβ”€β”€ keywords.mdx
β”‚ β”œβ”€β”€ errors.mdx
β”‚ β”œβ”€β”€ promises.mdx
β”‚ β”œβ”€β”€ modules.mdx
β”‚ β”œβ”€β”€ browser-apis.mdx
β”‚ β”œβ”€β”€ nodejs-apis.mdx
β”‚ └── browser-compatibility.mdx
β”‚
└── assets/
β”œβ”€β”€ images/
β”œβ”€β”€ diagrams/
β”œβ”€β”€ examples/
└── datasets/