js l1

Arrays

Array literals

Know several options how to create Array

Array length

Know how Array length property works

Closures Basics

Nested functions

Able to create nested functions

Understand variables visibility for nested scopes

ECMAScript Basics

cost, let declarations

Understand differences between [var], [let] and [const]

Know block scope and [let] visibility

Able to explain dead zone concept for [let]

Arrow functions

Know difference between arrow and usual functions

Able to discover cases for both arrow and usual functions using

Expressions, Operators, Statements

Operators

Know logic, mathematic operators

Know operators priority

Be able to use operators

Conditions

Know and able to use conditional statements

Loops

Know loop types

Understand loops differences and applicability

Be able to skip loop iteration or break loop

Functions

Function declaration/expression

Know both Function expression and Function declaration

Be able to explain declaration/expression differences

Objects

Object literals

Know several ways how to create object

Variables, Values, Data Types

Variables - Know how to declare variables

Values - Know how to assign values to variables

Literals - Know basic String, Number, Object, Array literals

Primitive Data Types

Discover primitive data types

Advanced Expressions

Hoisting

Understand hoisting concept

Able to use hoisting in development

Auto data type conversion

Know rules of auto data types conversion

Be able to discover cases of implicit data types conversion into boolean, string, number

Strict comparison

Be able to discover difference between strict and non-strict comparison

Be able to provide use cases of both types of comparison

Advanced Functions

arguments

Understand [arguments] and dynamic amount of parameters

Be able to use [arguments], retrieve additional parameters

[this] scope

Understand difference between function and method

Understand how [this] works, realize [this] possible issues

Manage [this] scope

Be able to replace [this] scope

Be able to use [call] and [apply] Function build-in methods

Arrays Built-in methods

Know how to copy array

Know how to copy array part

Know how to modify array

Arrays Iterating, Sorting, Filtering

Know how to sort Array

Be able to custom sorting for Array

Be able to filter Array elements

Know several method how to iterate Array elements

Be able to compare Hash and Array performance

Closures Advanced

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

Be able to discover cases where lexical environment required

Be able to create and use closures

ECMAScript Advanced

Promises

Know how [Promise] works

Know promise chain pattern

Be able to compare promise and callback patterns

Be able to handle errors in promises

Be able to use promisification pattern

Iterators

Know [Iterator] interface

Be able to create custom iterator

Generators

Know generator syntax

Be able to compare generator and iterator

Understand how [yield] works

Understand plain async code

Be able to handle errors in generators

ECMAScript Classes

Class declaration

Know [class] declaration syntax

Know how [class] declaration works under the hood

Understand difference between [class] and function constructor

Understand difference between method and [class] method

Be able to develop in OOP style using [class] declaration

[constructor] keyword

Inheritance

Know [extends] syntax and how it works

Getter/setter

Be able to create getter / setter [class] methods

ECMAScript Data Types & Expressions

Object [keys/values]

Object calculated props

[Symbol] data type

Know [Symbol] data type specific

Be able to explain difference between usual object key and symbol

[Set/Map] data types

[WeakSet/WeakMap] data types

ECMAScript Intermediate

Function default parameters

Discover default parameters concept and limitations

Spread operator for Function

Know how to use spread operator for Function arguments

Be able to compare [arguments] and spread operator

Spread operator for Array

Understand and able to use spread operator for Array concatenation

Destruction

Be able to discover destruction concept

Understand variables and Function arguments destruction

String templates

Know String template syntax and rules

[for..of] loop

Know how [for..of] loop works

Be able to compare [for..of] loop with other types of loops

Functional Inheritance

Rent a constructor

Know functional inheritance pattern

Be able to explain difference between functional and prototypal inheritance

Be able to discover benefits and drawback of both prototypal and functional inheritance

Mix-ins

Know mix-in pattern

Know mix-in specific and limitations

Able to explain benefits and drawbacks comparing with inheritance

Functional Patterns

Immediate function

Know immediate function pattern

Be able to explain the purposes of immediate function usage

Callback (Function as argument)

Know callback pattern

Understand callback limitations (callback hell)

Binding

Know how to bind [this] scope to function

Be able to provide cases when it’s required

Functional Scope

Know global scope and functional scope

Know variables visibility areas

Understand nested scopes and able work with them

Functions Parameters / Arguments

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

JavaScript Errors

[try..catch] statement

Know how to handle errors

Be able to explain [try..catch] performance issues

Throw errors

Custom errors

Object as Hash

Be able to use Object as a Hash

Be able to loop though Object keys

Object Oriented Programming

[new] keyword

Understand how [new] keyword works

Understand the difference in calling function with / without [new] keyword

Function constructor

Know function constructor concept

Know function constructor pattern

Able to create constructor functions

Public, private, static members

Know how to create public members

Know how to create private members

Know how to create static members

Understand OOP emulation patterns and conventions

Objects Built-in methods

Know how to use built-in methods

Know static Object methods

Prototypal Inheritance Basics

[proto] property

Understand [proto] object property

Understand how interpreter traverses object properties

Able to work with object [proto]

Able to use [Object.create] and define [proto] explicitly

Able to set / get object prototype

[prototype] property

Know function [prototype] property

Understand dependency between function constructor [prototype] and instance [proto]

Able to create ‘class’ methods using function [prototype] property

Regular Expressions Basics

String methods

Know String methods for regular expressions

Understand regular expressions performance issues

RegExp methods and flags

Metacharacters

Quantifiers

optional

Advanced Functional Patterns

Chaining

Know chaining pattern and cases where it will be useful

Currying

Know how to bind arguments to function

Memorization

Know memorization optimization

Understand problem with non-primitive arguments memorization

ECMAScript Classes Advanced

[super] keyword

Understand [super] reference

Able to use [super] reference (in constructor, in class methods)

[static] keyword

Know static members concept

Be able to create [class] static properties and methods

Functions Recursion

Know recursion concept and able to use it

Able to explain recursion risks, benefits and drawbacks

Object Property Descriptor

Know how to use property descriptors

Be able to explain enumerable, configurable, writable property attributes

Be able to create property getter/setter

Prototypal Inheritance Advanced

Temporary constructor

Know prototypal inheritance mechanism

Know prototypal inheritance temporary constructor pattern

Be able to explain prototypal chain from instance to its ‘class’ and ‘class’ parent

Be able to develop in OOP style using prototypal inheritance pattern

[instanceof] operator

Be able to use [instanceof] operator

Know how [instanceof] operator works

Regular Expressions Advanced

Ranges

Grouping

Replacements

Strict mode

Strict mode activation

Strict mode limitations