Hexlet 2-3 Flashcards
Модули 2 и 3
Зачем нужны типы ?
В общем для защиты программы от трудноотловимых ошибок.
Типы определяют две вещи:
- возможные (допустимые) значения.
- набор операций, которые можно выполнять над этим типом.
Неизменяемость примитивных типов.
Неизменяемость примитивных типов важна по многим причинам, ключевая - производительность.
Примитивные типы в JS поменять нельзя, а заменить значение переменной - без проблем.
Слабая типизация.
JS - это язык со слабой типизацией. Он знает о существовании разных типов, но относится к их использованию не очень строго, пытаясь, преобразовать информацию, когда это кажется разумным.
Поэтому как пример возможные ситуации складывание строки с числом.
В строгой типизации такое не прокатит.
Детерминированная функция.
Преимущества детерминированной функции.
Функция называется детерминированной тогда, когда для одних и тех же входных параметров она возвращает один и тот же результат.
Детерминированные функции удобны в работе, их легко оптимизировать, легко тестировать.
Так же стоит отметить, что если функция зависит от глобальных переменных или переменных окружения, она перестает быть детерминированной, так как эти значения в любой момент могут поменяться.
Побочный эффект.
Побочным эффектом называют действия, которые изменяют внешнее окружение (среду выполнения). К таким действия относятся любые сетевые взаимодействия, взаимодействия с файловой системой, вывод информации на экран или печать на принтере и так далее.
Кроме того, побочными эффектами считаются изменения внешних переменных (глобальных) или входных параметров, в случае если они переданы по ссылке.
Такие функции сложно тестировать и делать надежными.
Что такое стандартная библиотека ?
Набор функций. которые поставляются вместе с JS.
Сокращенная запись стрелочной функции.
Для это опускаются {} скобки и тогда не нужно писать return.
const sum = (a, b) => a + b;
Какая функция может называться предикатом ?
Варианты именования.
Функция может считаться предикатом только если она возвращает boolean.
isText;
hasText;
canText.
Какие значения при преобразовании будут false, а какие true.
0, ‘’, undefined, NaN, null - false;
Все остальное будет true.
Разница между постфиксной и префиксной нотации при использовании инкремента и декремента.
При использовании префиксной нотации сначала происходит изменение переменной, а потом возврат. При использовании постфиксной нотации - наоборот: можно считать, что сначала происходит возврат, а потом изменение переменной.
Почему конкатенация строк в цикле - это плохая идея ?
В большинстве языков это приводит к повышенному потреблению памяти.
Поэтому такую операцию лучше всего делать через массив и приведение этого массива к строке.
Что такое структура данных ?
Какие понятия стоит разделать, когда мы говорим про структуру данных ?
Структура данных - это конкретный способ хранения и организации данных.
Стоит разделять три понятия:
- Структура данных;
- Конкретный тип данных;
- Абстрактный тип данных.
Что такое объект ?
Объект - это тип данный в js, с помощью которого представляют связанный набор данных.
Печать на экран объекта, у которого есть другие объекты на глубине больше второго уровня.
В console.log() встроено одно ограничение. Если в объекте есть другие объекты глубже второго уровня, то при выводе на экран отобразиться вместо них [Object] или [Array].
Чтобы обойти это можно воспользоваться JSON.
Стандарты именования.
Функция - глагол;
Переменная - существительное;
Предикат - is, has, can.
Количество - сущность + count.