Fundamentals Flashcards

1
Q

JavaScript language

A

Однопоточный
Мультипарадигменный
Интерпретируемый (для его запуска нужен интерпретатор), в отличии от компилируемых языков.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Single-threaded

A

One thread = one call stack = one thing at a time

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Call stack

A

Основная очередь исполнения JS скрипта

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Callback queue

A

Очередь приоритетов, туда попадают callback от setTimeout, например, и ожидают там заложенное время для выполнения вовремя.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Event loop

A

Цикл ивентов (бесконечный), которые вызываются в основном потоке call stack, если он пуст, после ожидания в callback queue и в момент наступления ивенты оттуда.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Ternary operator

A

Условный (тернарный) оператор - единственный оператор в JavaScript, принимающий три операнда: условие, за которым следует знак вопроса (?), затем выражение, которое выполняется, если условие истинно, сопровождается двоеточием (:), и, наконец, выражение, которое выполняется, если условие ложно.

При присвоении значения также возможно выполнение более одной операции. В этом случае переменной будет присвоено то значение, которое стоит последним в списке значений, разделённых запятой.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

switch… case

A

switch (expression) {
case value1:
//Выполняются инструкции, если результат выражения value1
[break;]
case value2:
//Инструкции, соответствующие value2
[break;]

case valueN:
//Инструкции, соответствующие valueN
//statementsN
[break;]
default:
//Здесь находятся инструкции, которые выполняются при отсутствии соответствующего значения
//statements_def
[break;]
}

Допустимы цепочки case:
switch (Animal) {
case ‘Cow’:
case ‘Giraffe’:
case ‘Dog’:
case ‘Pig’:
console.log(‘This animal is not extinct.’);
break;
case ‘Dinosaur’:
default:
console.log(‘This animal is extinct.’);
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Switch case - examples, where it can be useful

A

Switch используется если надо сравнить результат с конкретными данными и в зависимости от них что-то сделать.
Как пример - обработка ошибок и вывод в зависимости от получаемой ошибки того или иного сообщения для пользователя.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

===

A

Оператор строгого равенства === проверяет равенство без приведения типов.

Другими словами, если a и b имеют разные типы, то проверка a === b немедленно возвращает false без попытки их преобразования.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

var

A

Var-объявления могут обладать видимостью глобальной или локальной (область видимости в пределах функции).
Область видимости по существу своему указывает на то, где данные переменные доступны для использования.
var является глобальной, когда объявлена вне какой-либо функции. Это означает, что любая переменная, объявленная через var вне блока функции, доступна для использования во всем окне.
var является локальной, когда объявлена внутри функции. Это означает, что она доступна и к ней можно обращаться только изнутри этой функции.

Переменные var могут быть объявлены повторно или обновлены
Это значит, что мы можем сделать это внутри соответствующей области видимости и не получить ошибку.
var greeter = “hey hi”;
var greeter = “say Hello instead”;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

var hoisting

A

Поднятие — механизм в JS, по которому переменные и объявления функций перемещаются в верхнюю часть своей области видимости, прежде чем начнется выполнение кода. Это означает, что если сделать вот так:
console.log (greeter);
var greeter = “say hello” …то это будет интерпретировано так:

var greeter;
console.log(greeter); // greeter is undefined
greeter = “say hello”

Минусы: всплытие может давать неожиданный результат, также переопределение может привести к тому, что программист обратится к переменной, которая уже сушествует и перезатрет ее значение.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

let & const

A

let и const имеют блочную область видимости.
Блок — это фрагмент кода, ограниченный фигурными скобками {}. Всё, что находится внутри фигурных скобок, относится к блоку. Таким образом, переменная, объявленная в блоке через let, будет доступна только внутри этого блока.
let могут быть обновлены, но не объявлены повторно.
Точно так же, как и в случае с var, переменные, объявленные через let, можно обновлять внутри их области видимости. Но, в отличие от var, let-переменные нельзя повторно объявить внутри области видимости.
Однако, если переменная с одним и тем же именем определена в разных областях видимости, ошибки не будет.
А вот переменные const не могут быть ни обновлены, ни объявлены повторно.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

let & const hoisting

A

Точно так же, как в случае с var, объявления через let и const перемещаются вверх. Но в отличие от var-переменных, которые инициализируются как undefined, let и const не инициализируется. Если использовать их до того, как они будут объявлены, то получите ошибку ReferenceError.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Temporal Dead Zone (TDZ)

A

Временная мертвая зона (TDZ) - это область блока, где переменная недоступна до тех пор, пока компьютер полностью не инициализирует ее значением.
Если обращаться к переменной из TDZ, то получим ReferenceError.

TDZ let и const заканчивается в момент инициализации переменной (присвоения ей значения).
TDZ var заканчивается в момент объявления переменной (присвоения значения undefined).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hoisting

A

Всплытие дает более высокий приоритет объявлению переменных, классов и функций во время выполнения программы.

Оно осуществляет объявления компьютером перед любым другим кодом.

Примечание: хойстинг не означает, что JS переставляет или перемещает код друг над другом.

Всплытие просто придает более высокую специфичность объявлениям JS. Таким образом, это заставляет компьютер сначала читать и обрабатывать объявления, прежде чем анализировать любой другой код в программе.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Polyfill

A

Это фрагмент кода, который позволяет использовать современную функциональность в более старых браузерах, которые не поддерживают ее по умолчанию.

Из-за меньшей производительности и ограниченной функциональности нельзя использовать исключительно полифилы. Нативная реализация API быстрее и с ней можно сделать больше, чем с помощью полифила.

Также полифилы нужны чтобы разрешить ситуации, когда браузеры реализуют одни и те же возможности разными способами. Тогда полифил использует нестандартные возможности конкретного браузера, чтобы в результате определенная функциональность была совместима с действующими стандартами JavaScript. В таком варианте полифилы сейчас используются редко, т.к. браузеры сейчас стремятся к более единообразному исполнению JS и в большинстве своем имеют большой набор стандартизированных API.

17
Q

Data types

A

Всего 8 типов данных.
7 примитивных:
1. Number;
2. String;
3. Boolean;
4. Null;
5. Undefined;
6. Symbol;
7. BigInt.

Один не примитивный тип:
Object.

Все примитивы присваиваются по значению, все объекты присваивают по ссылке. Т.е. если мы присваиваем переменной значение объекта, то это значение не котируется, а отображается как ссылка на изначальный объект.