JS Theory Flashcards
В чем разница между == и ===?
== сравнение с приведением типов (приводит все к числам) === сравнение без приведения типов (сначала typeof, потом значения)
Что делает forEach?
Метод для перебора
Аналог for для перебора массива, ничего не возвращает
arr.forEach(function(elem, i, array) {
alert( i + “: “ + elem+ “ (массив:” + array + “)” );
});
Что делает filter?
Метод для фильтрации
let results = arr.filter(function(item, index, array) { // если true - элемент добавляется к результату, и перебор продолжается // возвращается пустой массив в случае, если ничего не найдено });
Что делает map?
Метод для трансформации
let result = arr.map(function(item, index, array) { // возвращается новое значение вместо элемента });
Что делает reduce?
Метод для сохранения промежуточного результата.
Используются для вычисления какого-нибудь единого значения на основе всего массива.
let value = arr.reduce(function(previousValue, item, index, array) { // ... }, [initial]
При отсутствии initial в качестве первого значения берётся первый элемент массива, а перебор стартует со второго.
Как создать объект?
const obj = {...} const obj = new Object(){...}
Как создать массив?
let arr = []
let arr = new Array(“Яблоко”, “Груша”, “и тд”);
НО let arr = new Array(2) = [undefined, undefined]
и Array.of(2) = [2];
Как создать массив из итерируемого объект в массив?
Array.from(obj)
Что такое псевдомассив?
Это объекты, у которых есть индексы и свойство length, но не поддерживаются методы массивов
Что такое bind?
Метод позволяющий привязать или поменять контекст (зафиксировать this), в метод также передаётся набор аргументов, которые будут установлены перед переданными в привязанную функцию аргументами при её вызове.
let user = { firstName: "Вася", sayHi() { alert(`Привет, ${this.firstName}!`); } };
let sayHi = user.sayHi.bind(user);
Что такое самозапускающаяся функция?
(function(){})() - функция, которая вызывается и выполняется сразу после объявления и изолирует все переменные и функции от глобального контекста
Что такое замыкание?
Это функция, которая объявлена в другой функции и запоминает свои внешние переменные и может получить к ним доступ, даже после того, как внешняя функция прекратит выполнение.
Что такое деструктуризация?
Это спец.синтаксис, позволяющий распаковать массив или объект в набор переменных
let arr = [“Ilya”, “Kantor”]
let [firstName, surname] = [“Ilya”, “Kantor”];
let vegetables = ['🍅', '🍄', '🥕']; let tomato = vegetables[0]; let mushroom= vegetables[1]; let carrot= vegetables[2];
Что такое оператор …?
Если … располагается в конце списка аргументов функции, то это «остаточные параметры» (rest). Он собирает остальные неуказанные аргументы и делает из них массив.
Если … встретился в вызове функции или где-либо ещё, то это «оператор расширения» (spread). Он извлекает элементы из массива.
let arr = [3, 5, 1];
let arr2 = [8, 9, 15];
let merged = [0, …arr, 2, …arr2];
Отличие стрелочных функций?
1) Нет arguments
2) Не имеет контекста, т.е. не имеет собственного this. Она берет this в месте объявления, а обычная в месте выполнения.
Как задать метод прототипу?
Object.prototype.method = …
Как унаследовать объект?
const obj2 = Object.create(obj1)
Особенность создания объектов?
Все созданные объекты ссылаются на прототип
Что такое map?
Map – это коллекция ключ/значение, как и Object.
Map позволяет использовать ключи любого типа, а
Object приводит ключи к строкам
Что такое set?
Особый тип коллекции - Множество где каждый элемент уникален, т.е. добавление двух одинаковых ничего даст
Как узнать есть ли свойство у объекта?
obj.hasOwnProperty(prop) и в отличие от оператора in, этот метод не проверяет существование свойств в цепочке прототипов объекта.
Какие значения возвращают false?
0, null, undefined, NaN, ‘’
Что такое arguments?
Объект - список всех аргументов функции
Как отслеживать ошибки?
try, catch
Что такое event loop?
По сути, это бесконечный цикл, который ожидает задачи в стеке вызовов (call stack), исполняет их и снова ожидает появления новых. При этом он добавляет любой найденный вызов функции в стек вызовов и выполняет каждый по порядку.
Как скопировать функцию?
let newFunc = func; Без круглых скобок
Какие методы округления есть?
Math.floor - в меньшую сторону
Math.ceil - в большую сторону
Math.round - до ближайшего целого
Math.trunc - удаление дробной части без округления
toFixed(n) - до n знаков после запятой и возвращает строку
Как преобразовать число в строку?
1) num+””;
2) String(num);
3) num.toString(система счисления);
4) num.toFixed(знаков после запятой)
5) num.toPrecision ();
6) num.toExponential ();
Как преобразовать строку в число?
1) +str
2) Number(строка десятичных чисел, можно пробел в конце или начале);
3) parseInt(str);
4) parseFlow(str);
Что такое чистая функция?
1) Каждый раз функция возвращает одинаковый результат, когда она вызывается с тем же набором аргументов
2) Нет побочных эффектов
Что такое побочный эффект функции?
Любая работа, выполняемая функцией, не связанная с вычислением конечного результата, т.е. влияющая на внешний мир (изменение глоб.переменной, console.log, запросы DOM, HTTP запросы)
В чем отличие параметров от аргументов функции?
Правильно говорить «функция принимает параметры», нопри этом мы«передаём функцииаргументы».
Параметрами называются значения, которые мызадаёмвмомент объявления функции. Ихже мыиспользуем ивтеле функции.
Аргументами называют значения, которые мыпередаём вфункциюпри еёвызове.
Что такое promise?
Это объекты, которые используются в JavaScript при выполнении асинхронных операций. Они упрощают работу с асинхронными операциями и дают более удобные механизмы обработки ошибок, чем коллбэки и события.
Что такое стек вызовов?
Это структура данных, которая записывает строки выполняемых инструкций и выполняет их. После выполнения удаляет.
Три состояния promise?
- Промис в состоянии ожидания (pending). Когда вы не знаете, получите ли вы мобильный телефон к следующей неделе или нет.
- Промис решен (resolved). Вам реально купят новый телефон.
- Промис отклонен (rejected). Вы не получили новый мобильный телефон, так как всё-таки, мама была не в настроении.
Что такое hoisting?
Перенос var (частичное поднятие) или function (полное поднятие) в верхнюю часть их функциональной/локальной области видимости или в глобальную область видимости
Что такое объявление переменной?
Присвоение имени
var a;
Что такое инициализация переменной?
Присвоение значения переменной
a = 10;
Отличия var, let, const
1) var имеет область действия функции;
2) поднимется только объявление var, а не инициализация;
3) let, const имеют блочную область видимости
4) let, const можно объявить только один раз
5) const нельзя объявить без инициализации
6) let в цикле создает отдельную переменную для каждой итерации
Отличие spread и arguments?
1) Стрелочные функции не имеют “arguments”
2) Псевдомассив не поддерживает методы массивов
3) Всегда содержит все аргументы функции — мы не можем получить их часть
NaN === NaN
false
1 % 0
NaN
Пример импорта встроенной библиотеки
import path from ‘path’;
Как импортировать все переменные?
import * as solution from ‘./solution’;
Как импортировать модуль?
import { foo, bar } from ‘./file’;
Как переименовать переменную при импорте?
import { foo as foo1 } from ‘./file’;
Как сделать экспорт по-умолчанию?
const foo = ...; export default foo; 1) можно изменить имя при импорте 2) после экспорта нельзя указывать const, var, lets