From Siarhei

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка:

Gaps after checkpoint #1:

  • конструкторы (new Number, ...)

  • typeof(NaN)

Yes, typeof(NaN) is number. You can check if the value is NaN specifically using the function isNaN.

  • мутация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

  • for in Array

  • is Birthday func clear?

Git

ΠšΠΎΠΌΠΌΠΈΡ‚ - состояниС Ρ„Π°ΠΉΠ»Π°; сохранСниС, фиксация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π°, Ρ…Ρ€Π°Π½ΠΈΡ‚ измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ².

git merge - Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ истории

git rebase - нСльзя Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСскольким людям сразу. Новых ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½Π΅ сущСствуСт, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ сломанныС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. ORIG HEAD.

git pull = git fetch + git merge pull сливаСт ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹, Π½Π΅ давая ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡ…. fetch собираСт ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ сохраняСт Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΠΉ

git push -f ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

git ignore - Ρ„Π°ΠΉΠ».

fork - для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ рСпозитория ΠΎΡ‚ большого ΠΊΠΎΠ»-Π²Π° людСй.

Hash table, set

match ALL

TS 13 Π·Π°Π΄Π°Ρ‡

window.location

OOP, FP, FRP + ΠšΠ°Ρ€Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅/частичноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅/мСмоизация

HTTP, WS, REST, REST Full API

Performance (Optimization Techniques)

BOM, DOM, Storages

Loader, Plugin (webpack)

Require vs import (module system)

SPA vs MPA

several design patterns (e.g Decorator, Singleton, Factory)

generic

Type

https://www.typescriptlang.org/docs/handbook/intro.html (Π΄ΠΎ Generic)

Π’ΠΈΠΏΡ‹ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΈ Π² js, ts); --

CORS *

CSS grid *

Agile, Scrum, Kanban, Waterfall

Dod

DoR

Scrum

эстимации

ΠΈΠ·-Π·Π° итСративности раздуваСтся врСмя

Kanban

Π’Π°ΠΉΠΎΡ‚Π°

Π‘ΠΎΡ€Π΄Π° + ΠΊΠΎΠ»-Π²ΠΎ тасок ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅,

ΡΡƒΡ‚ΡŒ: быстро ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ таски + Ρ€Π΅Π»ΠΈΠ·

ВспылиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Hoisting)

ВсплытиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

JavaScript Π½Π΅ΠΏΡ€Π΅ΠΊΠ»ΠΎΠ½Π½ΠΎ сначала ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚, Π° ΡƒΠΆΠ΅ Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ наши ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

ВсС Π½Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ это ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

function hoist() {
  a = 20;
  var b = 100;
}

hoist();

console.log(a);
/*
Доступ ΠΊΠ°ΠΊ ΠΊ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ hoist()
Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: 20
*/

console.log(b);
/*
Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ b Π±Ρ‹Π»Π° Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π°, ΠΎΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Ρ€Π°ΠΌΠΊΠΈ области видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ hoist(). Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ вывСсти Π΅Ρ‘ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
Π’Ρ‹Π²ΠΎΠ΄: ReferenceError: b is not defined
*/

var

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

console.log(hoist); // Π’Ρ‹Π²ΠΎΠ΄: undefined

var hoist = 'The variable has been hoisted.';

ΠœΡ‹ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π»ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚: ReferenceError: HOIST IS NOT DEFINED, Π½ΠΎ вмСсто этого Π½Π°ΠΌ Π²Ρ‹Π²Π΅Π»ΠΎ undefined.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ JavaScript «поднял» объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит для Π΄Π²ΠΈΠΆΠΊΠ° JavaScript:

var hoist;

console.log(hoist); // Π’Ρ‹Π²ΠΎΠ΄: undefined
hoist = 'The variable has been hoisted.';

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² области видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π΄ΠΎ этого, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² глобальной области видимости ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π²Π²Π΅Ρ€Ρ…. Π”Π°Π»ΡŒΡˆΠ΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ «поднятии» Π² функциях .

function hoist() {
  console.log(message);
  var message='Hoisting is all the rage!'
}

hoist();

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π΄Π²ΠΈΠΆΠΎΠΊ Π²ΠΈΠ΄ΠΈΡ‚ ΠΊΠΎΠ΄ Π²Ρ‹ΡˆΠ΅:

function hoist() {
  var message;
  console.log(message);
  message='Hoisting is all the rage!'
}

hoist(); // Π’Ρ‹Π²ΠΎΠ΄: undefined

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ var message, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ заканчиваСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ hoist(), «поднимаСтся» Π½Π°Π²Π΅Ρ€Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Strict mode

'use strict';

console.log(hoist); // Π’Ρ‹Π²ΠΎΠ΄: ReferenceError: hoist is not defined
hoist = 'Hoisted';

ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ пропустили объявлСниС нашСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, use strict остановил нас Π½Π° ΠΏΠΎΠ»ΠΏΡƒΡ‚ΠΈ, Π²Ρ‹Π΄Π°Π² Reference error.

Π•Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

var c = a * b;
var a = 7;
var b = 3;
console.log(c); // NaN

Π—Π΄Π΅ΡΡŒ Ρ‚Π° ΠΆΠ΅ ситуация. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ a ΠΈ b ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄ΠΎ опСрСдСлСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ значСния undefined. А Ссли ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ undefined Π½Π° undefined, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Not a Number (NaN).

let

console.log(hoist); // Π’Ρ‹Π²ΠΎΠ΄: ReferenceError: hoist is not defined
let hoist = 'The variable has been hoisted.';

Как ΠΈ с var, ΠΌΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ вывСдСтся Π² Π»ΠΎΠ³ undefined. Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ es6 let Π½Π΅Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½ΠΎ относится ΠΊ Π½Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Reference ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ выдаст undefined вмСсто Reference error.

let hoist;

console.log(hoist); // Π’Ρ‹Π²ΠΎΠ΄: undefined
hoist = 'Hoisted'

const

Если ΠΌΡ‹ попытаСмся ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½ΠΎΠ΅ ΠΊ const ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

const PI = 3.142;

PI = 22/7; // Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ PI
console.log(PI); // Π’Ρ‹Π²ΠΎΠ΄: TypeError: Assignment to constant variable.

Как const измСняСт объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ?

console.log(hoist); // Output: ReferenceError: hoist is not defined
const hoist = 'The variable has been hoisted.';

Как ΠΈ с let, вмСсто Ρ‚ΠΈΡ…ΠΎΠ³ΠΎ спокойного Π²Ρ‹Ρ…ΠΎΠ΄Π° с undefined, Π΄Π²ΠΈΠΆΠΎΠΊ спасаСт нас, выдавая Reference error.

Π’ΠΎΠΆΠ΅ самоС происходит ΠΏΡ€ΠΈ использовании const Π² функциях.

ВсплытиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Function Declaration:

Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π²Π²Π΅Ρ€Ρ… ΠΊΠΎΠ΄Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ понятно ΠΏΠΎΡ‡Π΅ΠΌΡƒ JavaScript позволяСт Π½Π°ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΈΡ… объявим ΠΏΠΎ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡŽ Π² ΠΊΠΎΠ΄Π΅.

hoisted(); // Π’Ρ‹Π²ΠΎΠ΄: "This function has been hoisted."

function hoisted() {
  console.log('This function has been hoisted.');
};

Function Expression:

expression(); //Π’Ρ‹Π²ΠΎΠ΄: "TypeError: expression is not a function

var expression = function() {
  console.log('Will this work?');
};

Как ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅, объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ var expression поднимаСтся, Π½ΠΎ Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” Π½Π΅Ρ‚. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄Π²ΠΈΠΆΠΎΠΊ выдаст TypeErrorΠΊΠ°ΠΊ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ expression Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½ΠΎΠΉ, Π° Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΏΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌ

НазначСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ объявлСниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ объявлСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

ОбъявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Β«ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡΒ» Π½Π°Π΄ объявлСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½ΠΎ Π½Π΅ Π½Π°Π΄ ΠΈΡ… назначСниями.

НазначСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°Π΄ объявлСниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

var double = 22;

function double(num) {
  return (num*2);
}

console.log(typeof double); // Π’Ρ‹Π²ΠΎΠ΄: number

ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π΄ объявлСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

var double;

function double(num) {
  return (num*2);
}

console.log(typeof double); // Π’Ρ‹Π²ΠΎΠ΄: function

Π”Π°ΠΆΠ΅ Ссли ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ объявлСний, JavaScript Π΄Π²ΠΈΠΆΠΎΠΊ всС Ρ€Π°Π²Π½ΠΎ Π±Ρ‹ взял double Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Last updated