Basics
Details
- Main data types (string, number, array, object, function)
- var/let/const, scope (block/functional), closures
- var/let/const
- scope
- closures
- Loops (while/do-while/for-in/for-of)
- Error handling (throw/try-catch)
- Promises basics
- What is a promise?
- Promise states (fulfilled, rejected, etc)
- Working with promises
- Error handling with promises
- Async-await
- Function vs arrow function,
arguments
object - Working with objects/string/arrays/dates (+
date-fns
or similar library) - Classes
Links
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Introduction
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try…catch
- https://www.freecodecamp.org/news/javascript-async-await-tutorial-learn-callbacks-promises-async-await-by-making-icecream/
- https://medium.com/nerd-for-tech/implement-your-own-promises-in-javascript-68ddaa6a5409
- https://www.digitalocean.com/community/tutorials/how-to-work-with-strings-in-javascript
- https://www.digitalocean.com/community/tutorials/understanding-date-and-time-in-javascript
- https://javascript.info/async-await
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
- https://date-fns.org/docs/Getting-Started
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
Intermediate
Details
- Concurrency model and event loop
-
setTimeout
,setInterval
- microtasks vs macrotasks
- call stack, event queue, heap
-
- This context (
call
,apply
,bind
) - Promises in depth (all, race, combining with
async await
) - Classes in depth (static methods, super constructor, instance properties vs class (prototype) properties, binding context)
- Prototypal inheritance
- Symbol data type
- Iterators, for-of, generators
- Coercion
Links
- https://www.youtube.com/watch?v=8aGhZQkoFbQ&vl=en
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop
- https://medium.com/codex/understanding-this-in-javascript-the-complete-guide-c4c21fe15ff8
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
- https://dev.to/lawrence_eagles/an-easy-guide-to-understanding-classes-in-javascript-3bcm
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol
- https://medium.com/intrinsic-blog/javascript-symbols-but-why-6b02768f4a5c
- https://thisthat.dev/for-in-vs-for-of/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator
- https://www.freecodecamp.org/news/js-type-coercion-explained-27ba3d9a2839/
Advanced
Details
- ECMAScript versions, transpliation/polyfills/etc
- Proxy/Reflect
- Decorators
- Memory management, WeakMap, WeakSet
- Typed Arrays, DataView, endianness
- Threading, shared memory
- Basics of WebAssembly
- void operator
Links
- https://kangax.github.io/compat-table/es6/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
- https://2ality.com/2022/10/javascript-decorators.html
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays
- https://developer.mozilla.org/en-US/docs/Glossary/Endianness
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
- https://developer.mozilla.org/en-US/docs/WebAssembly
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void
Courses
- https://frontendmasters.com/courses/deep-javascript-v3/
- https://frontendmasters.com/courses/web-assembly/
Notes
Three main pillars
1, Scope/Closures 2, Prototypes/Objects 3, Types/Coercion
TODO
- Check Khi nằm trong timeout thì các biến sẽ lấy như thế nào nếu thay đổi trong React
- [ ]