-
- Data types
- Number methods
- String methods
- String templates
- ternary operator
- switch case - examples, where it can be useful
-
- Be able to discover cases of implicit data types conversion into boolean, string, number
- type conversions
- Strict comparison
Object.is
(optional)
- let var const - differences
- Temporal dead zone
- Hoisting
- what is polyfills?
-
- arrow func/ func expression/ func declaration
-
- Object
keys/values
- Know how to use built-in methods
- Object
-
- Know how to copy array
- Know how to copy a part of array
- Know how to modify array
- Know how to flatten nested array
-
- Know how to sort Array
- Know several method how to iterate Array elements
- Be able to custom sorting for Array
- Be able to filter Array elements
-
- for loop
- while loop
- do while loop
-
- Document (DOM)
-
- DOM Events
- Know basic Event types
- Mouse / Keyboard Events
- Form / Input Events
- Event Listeners
- Event Phases (difference between them)
- Custom events
(optional)
-
- Know Event propagation cycle
- Know how to stop Event propagation (
stopPropagation() / stopImmediatePropagation()
) - Know how to prevent Event default browser behavior (
event.preventDefault()
) - Delegating
- Understand Event delegating benefits and drawbacks
-
- setTimeout / setInterval
- clearTimeout / clearInterval
-
- LocalStorage
- SessionStorage
-
- Date object
- Date methods, props
- Timezones
(optional)
- Internationalization js (Intl)
(optional)
-
- KISS, DRY, YAGNI
-
- Know static Object methods
- Property flags & descriptors (student is able to set property via Object. defineProperty)
- Know how to create iterable objects, Symbol.iterator usage
(optional)
-
- Object computed props
- Be able to loop through Object keys
-
- Know global scope and functional scope
- Know variables visibility areas
- Understand nested scopes and able work with them
-
- Know how to define Function parameters
- Know difference between parameters passing by value and by reference
- Know how to handle dynamic amount of Function parameters
-
- Context (lexical environment)
- Understand function creation context (lexical environment)
- Be able to explain difference between scope and context
- Inner/outer lexical environment
- Understand lexical environment traversing mechanism
- Understand connection between function and lexical environment
-
- Function default parameters
- Know how to use spread operator for Function arguments
- Be able to compare
arguments
andrest parameters
- Spread operator for Array
- Understand and able to use spread operator for Array concatenation
- Destructuring assignment
- Be able to discover destructuring assignment concept
- Understand variables and Function arguments destructuring assignment
- Know how
for..of
loop works(optional)
- What is module / module pattern? For what purposes they were created?
- Modules types (AMD, ES6, CommonJS, UMD).
- Modules syntax.
- Common modules features (export default, named exports, exports as, etc).
- Dynamic imports.
-
this
in functions- Reference Type & losing
this
- Understand difference between function and method
- Understand how
this
works, realizethis
possible issues - Manage
this
- Be able to replace
this
value - Be able to use
call
andapply
Function built-in methods - Know how to bind
this
scope to function - Binding, binding one function twice
-
- Callback (Function as argument)
- Know callback pattern
- Know IIFE pattern
(optional)
- Understand callback limitations (callback hell)
(optional)
- Carrying and partial functions
-
new
keyword- Understand how
new
keyword works - Function constructor
- Know function constructor concept
- Able to create constructor functions
- Public, private, static members
- Know how to create public/static/private members
- Understand OOP emulation patterns and conventions
(optional)
-
- Class declaration
- Know
class
declaration syntax - Understand difference between
class
andconstructor function
- Getter/setter
- What does
super()
do and where we have to use it?
-
-
__proto__
property -
Understand
__proto__
object property -
Able to use [Object.create] and define
__proto__
explicitly -
prototype
property -
Know function
prototype
property -
Understand dependency between function constructor
prototype
and instance__proto__
-
Able to create 'class' methods using function
prototype
property -
Able to set / get object prototype
(optional)
-
Set/Map
data types -
WeakSet/WeakMap
data types
-
-
- JavaScript Errors (throw, Error class)
try..catch
statement- Error handling
- Error class
- error logging
- async error events
- Custom errors
(optional)
-
- Promises
- Promise states
- Promise chaining
- Promise static methods
- Be able to compare promise and callback patterns
(optional)
- Be able to handle errors in promises
- async/await
- event loop
- Garbage collector (concept)
(optional)
-
- Location
- Know browser location structure
- History API (Global object window)
- Know browser History APIconcept
- Be able to navigate within browser history
- Be able to use history state
(optional)
- Navigator
(optional)
- Know how to parse user agent
(optional)
- Know how to discover client platform, browser
- Cookies
-
-
Parsing
-
Reflow
-
Repaint
-
Critical rendering path (CRP)
(optional)
-
Custom events
(optional)
-
-
- Web components, shadow DOM (concept)
(optional)
- Web components, shadow DOM (concept)
-
Fetch
(with usage)XMLHTTPRequest
(concept)(optional)
WebSocket
(concept)(optional)
-
requestAnimationFrame
(optional)
- Be able to explain difference between
setTimeout
andrequestAnimationFrame
(optional)
-
- Cookies
- Difference between localStorage, sessionStorage and cookies
-
- basic types
- enums
- type / interface, differences between them
- using interfaces with optional properties, read-only properties, etc...
- function types
- utitily types
(optional)
- typeguards
(optional)
- creating custom types
- generic types (concept)
- understanding TS (ES6) module system
-
Creational Design Patterns
-
Structural Design Patterns
-
Behavioral Design Patterns
-
MVC
(optional)
-
- SOLID principles
- design patterns used on a student's project, and able to compare these patterns
(optional)
-
- Agile
- Scrum / Kanban / Waterfall
- Estimation
- Testing Types
- Integration Testing
- E2E
- Security Testing
- Perforamance Testing
- Test Pyramid
- Testing approaches
(optional)
- FIRST
- TDD и BDD
- Frameworks
(optional)
-
- XSS
- CORS
- OWASP Top 10
- Auth (JWT, OAuth, Basic, etc.)