Типы данных Flashcards

1
Q

Какие примитивные типы данных существуют?

A

существует 7 примитивных типов данных: string, number, boolean, symbol, null, undefined, bigint.

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

Для чего используются объекты-обертки String, Number, Boolean, Symbol, BigInt?

A

объекты-обертки String, Number, Boolean, Symbol, BigInt используются для расширения функционала примитивов. Они включают все методы примитивов, что позволяет использовать методы для примитивов и при этом сохранить скорость работы примитивов на прежнем уровне.

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

Могут ли создаваться объекты-обертки для примитивных типов данных?

A

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

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

Как не рекомендуется использовать конструкторы String, Number, Boolean?

A

Конструкторы String, Number, Boolean не рекомендуется использовать с оператором new, так как могут быть ошибки.

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

Можно ли использовать конструкторы String, Number, Boolean без оператора new?

A

да, конструкторы String, Number, Boolean могут быть использованы без оператора new для преобразования типов данных.

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

Имеют ли null и undefined объекты-обёртки и методы?

A

Нет, у null и undefined нет объектов-обёрток и методов.

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

Что происходит при попытке создания свойства у null или undefined?

A

При попытке создания свойства у null или undefined возникает ошибка.

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

Что происходит, когда пытаются создать свойство у примитивного типа данных?

A

Если попытаться добавить свойство к примитиву, то JS создаст временный объект-обертку с этим свойством, но после завершения операции объект-обертка уничтожится и изменения не сохранятся.

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

Что такое 64-битный формат IEEE-754?

A

64-битный формат IEEE-754 — это стандарт для представления чисел с плавающей точкой в компьютерах. В JS он используется для хранения чисел типа number, который использует 64 бита для представления числа и включает знак, мантиссу и экспоненту.

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

Как записать число в научном формате?

A

Число можно записать в научном формате, используя экспоненту: например, let billion = 1e9; // 1000000000.

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

Как представить число в системе счисления с основанием 16?

A

Число можно представить в системе счисления с основанием 16, используя префикс 0x: let a = 0xff; // 255.

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

Какие методы округления чисел есть в JavaScript?

A

В JavaScript есть несколько методов округления чисел: Math.floor (округление в меньшую сторону), Math.ceil (округление в большую сторону), Math.round (округление до ближайшего целого) и Math.trunc (удаление дробной части без округления).

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

Как округлить число до определенного количества знаков после запятой?

A

Число можно округлить до определенного количества знаков после запятой, используя метод toFixed(n): let num = 12.34; alert(num.toFixed(1)); // “12.3”.

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

Как решить проблему потери точности при работе с дробными числами в JavaScript?

A

Наиболее надежный способ избежать проблемы потери точности при работе с дробными числами в JavaScript - использовать метод toFixed(n), который округляет число до определенного количества знаков после запятой.

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

Что такое IEEE-754 и как это связано с нулями 0 и -0?

A

IEEE-754 - это стандарт для представления чисел с плавающей точкой в компьютерах. Этот стандарт использует прямой код, из-за чего возникают два разных представления для нуля: положительный 0 и отрицательный 0 (-0).

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

Что делает функция isNaN() и как она отличается от проверки на равенство с NaN?

A

isNaN() преобразует свой аргумент в число и проверяет, является ли оно NaN. При этом, NaN не равен ничему, даже самому себе, поэтому проверка на равенство с NaN с помощью оператора === всегда возвращает false.

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

Что делает функция isFinite() и как она отличается от проверки на равенство с Infinity/-Infinity?

A

isFinite() преобразует свой аргумент в число и возвращает true, если это число является конечным (то есть не равно NaN/Infinity/-Infinity). Проверка на равенство с Infinity/-Infinity с помощью оператора === также может использоваться для определения бесконечных значений, но isFinite() более удобна в использовании.

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

Какие особенности есть у функции Object.is()?

A

Object.is() осуществляет строгое сравнение значений с учетом нескольких особых правил:
- он возвращает true для двух NaN, в отличие от оператора ===;
- он возвращает false для двух нулей с разными знаками, в отличие от оператора ===;
- в остальных случаях Object.is() эквивалентен оператору ===.

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

Какие функции используют для явного преобразования строки в число и как они отличаются друг от друга?

A

Для явного преобразования строки в число используют функции +/Number(), parseInt() и parseFloat(). Отличие между ними в том, что +/Number() преобразуют строку в число с учетом возможности наличия десятичной точки, а функции parseInt() и parseFloat() преобразуют только целое или десятичное число соответственно, игнорируя любой другой текст, находящийся в строке.

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

Как использовать функцию parseInt() для чтения чисел в других системах счисления?

A

Для чтения чисел в других системах счисления с помощью функции parseInt() нужно передать второй параметр radix, указывающий на основание системы счисления. Значение radix должно быть между 2 и 36, по умолчанию оно равно 10.

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

Какой формат используется для строк в JavaScript?

A

Всегда используется формат UTF-16, независимо от кодировки страницы.

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

Какие типы кавычек можно использовать для создания строк в JavaScript?

A

Можно использовать двойные кавычки (“ “), одинарные кавычки (‘ ‘), и обратные кавычки (``).

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

Какой преимущественный метод работы с обратными кавычками в JavaScript?

A

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

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

Какие символы оставлены для обратной совместимости, но сейчас не используются?

A

\b, \f, \v

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Как задать символ с шестнадцатеричным Юникодным кодом XX?
\xXX
26
Как задать символ в кодировке UTF-16 с шестнадцатеричным кодом XXXX?
\uXXXX
27
Как задать символ в кодировке UTF-32 с шестнадцатеричным кодом от U+0000 до U+10FFFF?
\u{X…XXXXXX} (от 1 до 6 шестнадцатеричных цифр)
28
Что содержит свойство length у строки?
Длину строки
29
Как получить символ по определенной позиции в строке?
С помощью квадратных скобок str[pos] или с помощью метода charAt(pos) (старый метод).
30
Что вернется при попытке получить символ в позиции, которой нет в строке с помощью str[pos]?
undefined.
31
Что вернется при попытке получить символ в позиции, которой нет в строке с помощью метода charAt(pos)?
Пустая строка
32
Как можно итерироваться по строке посимвольно?
С помощью цикла for..of.
33
Можно ли изменить содержимое строки?
Нельзя. Строки неизменяемы.
34
Что делает метод str.indexOf(substr)?
Метод str.indexOf(substr) ищет подстроку substr в строке str и возвращает позицию первого символа найденной подстроки. Если искомая подстрока не найдена, метод возвращает -1.
35
Что делает необязательный второй аргумент метода str.indexOf(substr, position)?
Необязательный второй аргумент метода str.indexOf(substr, position) позволяет начать поиск подстроки с определенной позиции position в строке str.
36
Что делает метод str.lastIndexOf(substr)?
Метод str.lastIndexOf(substr) ищет последнее вхождение подстроки substr в строке str и возвращает позицию первого символа найденной подстроки. Если искомая подстрока не найдена, метод возвращает -1.
37
Как исправить ошибку, возникающую при проверке методом str.indexOf() в условии if?
Чтобы избежать ошибки, возникающей при проверке методом str.indexOf() в условии if, нужно сравнить результат метода с -1, например, используя следующую конструкцию: if (str.indexOf("Widget") != -1). Метод “includes” – более современный.
38
Что такое метод includes и какой тип данных он возвращает?
Метод includes проверяет, содержится ли подстрока в строке, и возвращает значение true, если содержится, и false, если не содержится.
39
Как использовать метод includes для поиска подстроки в определенной позиции?
Метод includes имеет второй аргумент, который позволяет начать поиск с определенной позиции. Например, "Midget".includes("id", 3) вернет false, поскольку поиск начинается с позиции 3.
40
Что делает метод startsWith для строки?
Метод startsWith проверяет, расположена ли искомая подстрока в начале строки. Например, "Widget".startsWith("Wid") вернет true, поскольку "Wid" является началом "Widget".
41
Зачем нужен метод endsWith в строках?
Метод endsWith проверяет, расположена ли искомая подстрока в конце строки. Например, "Widget".endsWith("get") вернет true, поскольку "get" является концом "Widget".
42
Что такое метод slice и какие аргументы он принимает?
Метод slice возвращает часть строки в диапазоне [start, end). Он принимает два аргумента: start - начальную позицию, end - конечную позицию.
43
Как использовать метод slice, если необходимо получить часть строки от начальной позиции до конца строки?
Если необходимо получить часть строки от начальной позиции до конца строки, можно вызвать метод slice с одним аргументом - начальной позицией. Например, "stringify".slice(2) вернет "ringify".
44
Что произойдет, если задать отрицательное значение для аргументов start и end в методе slice?
Если задать отрицательное значение для аргументов start и end в методе slice, то отсчет будет идти с конца строки. Например, "stringify".slice(-4, -1) вернет "gif".
45
Что такое метод substring и какие аргументы он принимает?
Метод substring возвращает часть строки в диапазоне [start, end). Он принимает два аргумента: start - начальную позицию, end - конечную позицию.
46
Какой метод строки возвращает часть строки от start длины length?
Метод substr.
47
Можно ли задать отрицательные аргументы для метода substring?
Нет, отрицательные аргументы не поддерживаются для метода substring.
48
Что возвращает метод slice, если задать start больше end: 1. для строки; 2. для массива.
Метод slice вернет: 1. пустую строку; 2. пустой массив.
49
Как сравниваются строки?
Строки сравниваются исходя из кодировки каждого символа в строке.
50
Что возвращает метод str.codePointAt(pos)?
Метод str.codePointAt(pos) возвращает код символа, находящего на позиции pos.
51
Что делает метод String.fromCodePoint(code)?
Метод String.fromCodePoint(code) создает символ по коду code.
52
Какое правильное сравнение строк при работе с разными языками?
Правильное сравнение при работе с разными языками - метод str.localeCompare(str2), который возвращает: - -1, если str < str2, - 1, если str > str2, - 0, если str = str2.
53
Какие два способа объявления массива существуют?
let arr = new Array(); let arr = [];
54
Как получить последний элемент массива? Какими методами можно это сделать?
Два способа: arr[arr.length - 1] arr.at(-1) (новый метод)
55
Какие методы используются для добавления и удаления элементов в конец массива?
Для добавления элементов в конец массива используется метод push(). Для удаления последнего элемента массива используется метод pop().
56
Какие методы используются для добавления и удаления элементов в начало массива?
Для добавления элементов в начало массива используется метод unshift(). Для удаления первого элемента массива используется метод shift().
57
Почему методы pop/push эффективнее, чем shift/unshift?
Это связано с тем, что методы shift/unshift работают с началом массива и при удалении или добавлении элемента приходится перезаписывать индексы всех оставшихся элементов. Для методов pop/push этого делать не нужно.
58
Какое свойство массива хранит не количество элементов, а индекс последнего элемента + 1?
Свойство length хранит не количество элементов, а индекс последнего элемента + 1.
59
Как можно очистить массив?
С помощью length можно легко очистить массив: arr.length = 0;
60
Перечислите некоторые ошибки, которые могут возникнуть при работе с массивами.
Некоторые ошибки, которые могут возникнуть при работе с массивами: - добавление нечислового свойства, например, arr.test = 5; - создание «дыр»: например, добавление arr[0], затем arr[1000]; - заполнение массива в обратном порядке.
61
Как можно создать массив заданной длины?
Массив заданной длины можно создать, вызвав конструктор new Array() с одним аргументом, который задает длину массива. Например: let arr = new Array(5); // создастся массив с длиной 5.
62
Какой метод возвращает список элементов массива через запятую?
Метод toString() возвращает список элементов массива через запятую. Это связано с тем, что в конструкторе массиве имеется обработчик хинта, который и занимается выводом элементов в виде строки.
63
Какой метод массивов можно использовать для добавления, удаления и замены элементов в массиве?
Метод splice.
64
Что произойдет, если попытаться удалить элемент массива с помощью оператора delete?
Элемент удалится, а вместо него в массиве будет значение undefined, так как удаляется значение "по ключу".
65
Какие параметры принимает метод splice?
Метод splice принимает следующие параметры: index - начальная позиция, может быть отрицательной, тогда отсчет начинается с конца, deleteCount - количество элементов, которое необходимо удалить, elem1, ..., elemN - добавление элементов в массив на место удаленных.
66
Что возвращает метод splice?
Метод splice возвращает массив удаленных элементов.
67
Что возвращает метод slice()?
Метод slice() возвращает новый массив, в который копирует элементы массива в диапазоне от start до end (не включая end).
68
Что произойдет, если вызвать метод slice() без аргументов?
Если вызвать метод slice() без аргументов, то будет создана копия исходного массива.
69
Что делает метод массива concat()?
Метод concat() создает новый массив, в который копирует элементы других массивов или просто вставляет какие-либо аргументы.
70
Как можно скопировать объект в массив при использовании метода массива concat()?
Для того чтобы скопировать объект в массив при использовании метода concat(), объекту нужно применить специальное свойство Symbol.isConcatSpreadable и обязательно добавить свойство length, чтобы объект получился подобным массиву.
71
Что делает метод forEach() у массивов?
Метод forEach() перебирает каждый элемент массива и выполняет заданную функцию для каждого элемента.
72
Какой метод массивов используется для поиска индекса элемента в массиве?
Для поиска индекса элемента в массиве можно использовать методы indexOf(), lastIndexOf().
73
Какие значения возвращает метод indexOf() при поиске элемента в массиве?
Метод indexOf() возвращает индекс элемента, если он был найден в массиве, и -1, если элемент не найден.
74
Как работает метод includes() при поиске элемента в массиве и в чем отличие от метода indexOf()?
Метод includes() также ищет элемент в массиве, но в отличие от метода indexOf() он умеет правильно обрабатывать значение NaN. Метод includes() возвращает true, если элемент найден, и false в противном случае.
75
Что делает метод find() у массивов?
Метод find() перебирает каждый элемент массива и выполняет заданную функцию для каждого элемента. Если функция вернула true для текущего элемента, метод find() возвращает этот элемент и прекращает перебор. Если все итерации оказались ложными, возвращается undefined.
76
Какой метод массивов используется для поиска индекса элемента в массиве, аналогичный методу find(), но возвращающий не сам элемент, а его индекс?
Метод findIndex(). Если элемент не найден, то возвращает -1
77
Что такое метод filter и как он работает?
Метод filter() используется для фильтрации массива. Он принимает функцию, которая проверяет каждый элемент массива на условие и возвращает новый массив с элементами, для которых условие выполняется.
78
В чем отличие метода filter от метода find?
Метод filter() возвращает массив элементов, которые прошли проверку на соответствие условию, в то время как метод find() возвращает первый элемент массива, который прошел проверку на соответствие условию.
79
Что такое метод map и как он работает?
Метод map() используется для преобразования массива. Он принимает функцию, которая вызывается для каждого элемента массива и возвращает новый массив с результатами выполнения этой функции для каждого элемента.
80
Что такое метод reduce и как он работает?
Метод reduce() используется для вычисления единого значения на основе массива. Он принимает функцию, которая вызывается для каждого элемента массива и принимает два аргумента: результат предыдущего вызова функции и текущий элемент массива. Метод reduce() возвращает результат выполнения этой функции.
81
Что такое метод reduceRight и в чем его отличие от метода reduce?
Метод reduceRight() выполняет ту же функцию, что и метод reduce(), но перебор элементов массива начинается с конца массива.
82
Что делает метод split() для строк?
Метод split() для строк разделяет строку в элементы массива через разделитель, который передается аргументом.
83
Как работает метод join() для массивов?
Метод join() создает строку из элементов массива, вставляя между ними заданный разделитель.
84
Что делает метод sort() для массивов?
Метод sort() для массивов сортирует элементы массива в порядке возрастания как строки.
85
Что делает метод reverse() для массивов?
Метод reverse() для массивов переворачивает порядок элементов в массиве на обратный.
86
Как проверить, является ли переданный аргумент массивом?
Использовать метод Array.isArray().
87
Какой результат вернет typeof для массива и объекта?
Для массива и объекта typeof вернет "object".
88
Для чего используется параметр thisArg в методах find, filter, map и других?
Параметр thisArg позволяет передавать контекст, в котором будет вызываться функция.
89
Обязательный ли параметр thisArg в методах find, filter, map и других?
Параметр thisArg не является обязательным
90
Что такое перебираемые объекты в JavaScript?
Перебираемые объекты в JavaScript - это объекты, которые имеют метод Symbol.iterator, позволяющий перебирать элементы объекта в цикле for..of.
91
Почему можно перебирать массив или строку в цикле for..of?
Массивы и строки можно перебрать в цикле for..of, так как у них есть свойство Symbol.iterator.
92
Можно ли перебрать объект в цикле for..of? Если да, то как это сделать?
Объекты нельзя перебрать в цикле for..of, но можно сделать объект итерируемым, добавив ему метод Symbol.iterator.
93
Что должен возвращать метод Symbol.iterator объекта?
Метод Symbol.iterator должен возвращать итератор - объект с методом next().
94
Как работает цикл for..of с перебираемыми объектами?
Когда цикл for..of запускается, он вызывает метод Symbol.iterator объекта, который должен вернуть итератор - объект с методом next(). Затем for..of работает только с этим итератором, вызывая метод next() на каждой итерации цикла.
95
Являются ли строка итерируемым объектом?
Да
96
Что такое псевдомассив?
Псевдомассив - это объект, у которого есть индексы и свойство length, что позволяет работать с ним как с массивом, но он не имеет стандартных методов массивов.
97
Какие методы массивов нельзя использовать с псевдомассивом?
С псевдомассивом нельзя использовать методы массивов, такие как push, pop, shift, unshift и другие.
98
Что делает метод Array.from()?
Метод Array.from() позволяет преобразовать итерируемый объект или псевдомассив в настоящий массив.
99
Какие аргументы может принимать метод Array.from()?
Метод Array.from() может принимать на вход итерируемый объект или псевдомассив. Также на вход метод принимает функцию-трансформер (mapFn) и контекст (thisArg) для этой функции.
100
Как происходит преобразование итерируемого объекта или псевдомассива в массив с помощью метода Array.from()?
Метод Array.from() проверяет, является ли переданный аргумент итерируемым объектом или псевдомассивом, создает новый массив и копирует в этот массив все элементы.
101
Как можно использовать метод Array.from() для применения трансформирующей функции к элементам итерируемого объекта или псевдомассива?
Метод Array.from() может принимать на вход функцию-трансформер (mapFn), которая будет применена к каждому элементу итерируемого объекта или псевдомассива, а результаты выполнения функции будут записаны в итоговый массив.
102
Что произойдет, если методу Array.from() передать объект, который не является ни итерируемым объектом, ни псевдомассивом?
Будет выброшена ошибка.
103
Какое отличие коллекции Map от объекта Object?
Map позволяет использовать в качестве ключа объект и любой примитив, а для Object все ключи преобразуются в строку.
104
В каком порядке хранятся свойства в коллекции Map?
Свойства в коллекции Map хранятся в порядке их добавления.
105
Какие методы можно использовать для перебора коллекции Map?
Для перебора коллекции Map можно использовать методы: map.keys(), map.values() и map.entries().
106
Какой метод можно использовать для выполнения функции для каждой пары (ключ, значение) в коллекции Map?
Для выполнения функции для каждой пары (ключ, значение) в коллекции Map можно использовать метод forEach.
107
Что такое Map в JavaScript?
Map - это коллекция в JavaScript, которая хранит пары ключ-значение и позволяет использовать любые типы данных в качестве ключей.
108
Как создать Map в JavaScript?
Можно создать Map с помощью оператора new, например, let map = new Map(). Можно также передать итерируемый объект в качестве аргумента конструктора, чтобы сразу заполнить Map парами ключ-значение.
109
Как получить значение из Map в JavaScript?
Для получения значения из Map можно использовать метод get(), например, map.get(key), где key - ключ, по которому нужно найти значение
110
Как создать Map из обычного объекта в JavaScript?
Для создания Map из обычного объекта в JavaScript можно воспользоваться методом Object.entries(), который возвращает пары ключ-значение объекта. Затем эти пары можно передать в качестве аргумента конструктора Map.
111
Как создать обычный объект из Map в JavaScript?
Для создания обычного объекта из Map в JavaScript можно воспользоваться методом Object.fromEntries(), который принимает итерируемый объект с парами ключ-значение и возвращает объект. Можно также использовать метод entries() для получения итерируемого объекта пар ключ-значение из Map, а затем передать его в метод Object.fromEntries().
112
Что такое множество Set?
Множество Set - это коллекция уникальных значений.
113
Как добавить значение в Set?
Используйте метод set.add(value).
114
Что произойдет, если добавить в Set значение, которое уже есть в нем?
Ничего не произойдет, т.к. значения в Set уникальны.
115
Как удалить значение из Set?
Используйте метод set.delete(value).
116
Как проверить, есть ли значение в Set?
Используйте метод set.has(value).
117
Как очистить Set?
Используйте метод set.clear().
118
Как получить количество элементов в Set?
Используйте свойство set.size
119
Как перебрать все значения в Set?
Используйте цикл for..of или метод set.forEach().
120
Как получить значения, ключи и пары значений и ключей в Set?
Используйте методы set.values(), set.keys() и set.entries().
121
Что такое WeakMap?
WeakMap - это специальный тип объекта Map в JavaScript, который позволяет использовать объекты в качестве ключей и автоматически удаляет связанные с ними данные, когда эти объекты удаляются из памяти.
122
Какие отличия есть между WeakMap и Map?
- В WeakMap в качестве ключей могут выступать только объекты, - WeakMap не поддерживает методы keys(), values() и entries() - WeakMap нельзя перебрать - Если ссылка на объект, являющегося ключом в WeakMap будет удалена, то из памяти будет удален и объект.
123
Какие методы есть у WeakMap?
У WeakMap есть методы get(key) - получить значение по ключу, set(key, value) - сохранить значение по ключу, delete(key) - удалить свойство по ключу, has(key) - проверить, есть ли свойство по ключу.
124
В чем преимущество использования WeakMap перед Map?
Преимущество использования WeakMap перед Map состоит в том, что если ссылка на объект, являющегося ключом в WeakMap будет удалена, то из памяти будет удален и объект, что позволяет избежать утечек памяти.
125
В каких случаях лучше использовать WeakMap?
Лучше использовать WeakMap в тех случаях, когда необходимо связать дополнительные данные с объектами, но эти объекты могут быть удалены из памяти. Например, для хранения дополнительных данных о пользователях в веб-приложениях.
126
В каких случаях не стоит использовать WeakMap?
WeakMap не стоит использовать, если нужно хранить данные, связанные с примитивами, или если нужно использовать ключи, которые не могут быть объектами. Также не стоит использовать WeakMap, если нужно сохранять данные на протяжении всего жизненного цикла программы, так как в этом случае они будут автоматически удалены из памяти, когда больше не будут использоваться.
127
Какие типы значений могут быть добавлены в WeakSet?
В WeakSet в качестве значений могут выступать только объекты.
128
Какие методы не поддерживаются WeakSet?
WeakSet не поддерживает методы keys(), values() и entries().
129
Можно ли перебрать элементы в WeakSet?
Нет, нельзя.
130
Какие методы можно использовать для работы с WeakSet?
Методы, которые можно использовать для работы с WeakSet, это: weakSet.add() - добавить объект в качестве значений. weakSet.has() - проверить, есть ли объект во множестве. weakSet.delete() - удалить объект из множества.
131
Как долго объекты находятся в WeakSet?
Объекты находятся в WeakSet до тех пор, пока они доступны где-то еще.
132
Для каких задач можно использовать WeakSet?
WeakSet может использоваться как дополнительное хранилище данных, когда необходимо хранить объекты только до тех пор, пока они доступны где-то еще, и автоматически удалять их при удалении из основного хранилища данных. Например, для учета пользователей, заходивших на сайт, или для хранения прочитанных сообщений.
133
Что такое методы keys(), values() и entries() для объектов?
Это методы, которые возвращают массив из ключей, значений и пар [ключ, значение] объекта соответственно.
134
Какие методы следует использовать, если необходимо учитывать символьные свойства объекта?
Object.getOwnPropertySymbols() или Reflect.ownKeys(obj).
135
Что вернет вызов метода Object.entries(obj)?
Массив пар ключ-значение объекта.
136
Как преобразовать массив обратно в объект?
Вызвать метод Object.fromEntries(array).
137
Какой метод можно использовать для подсчета суммы значений свойств объекта?
Метод Object.values(obj), затем метод массивов reduce().
138
Как посчитать количество свойств объекта?
Вызвать метод Object.keys(obj), затем полученный массив свойств объекта преобразовать к его длине с помощью метода length.
139
Что такое деструктуризация массива?
Деструктуризация массива - это синтаксис, который позволяет извлекать элементы из массива и присваивать их переменным одновременно.
140
Каким образом можно пропустить какой-то элемент при деструктуризации массива?
Чтобы пропустить какой-то элемент, его можно просто опустить при деструктуризации массива, например: let [firstName, , title] = ["Julius", "Caesar", "Consul", "of the Roman Republic"];
141
Можно ли использовать деструктуризацию для присваивания значений свойств объекта?
Да, удобно деструктурировать свойства объектов, например: let user = {}; [user.name, user.surname] = "Ilya Kantor".split(' ');
142
Можно ли использовать деструктуризацию для итерации по ключам и значениям объекта?
Да, можно использовать деструктуризацию для итерации по ключам и значениям объекта, например: for (let [key, value] of Object.entries(user)) { alert(${key}:${value}); // name:John, затем age:30 }
143
Можно ли использовать деструктуризацию для итерации по элементам Map?
Да, можно использовать деструктуризацию для итерации по элементам Map, например: for (let [key, value] of user) { alert(${key}:${value}); // name:John, затем age:30 }
144
Что такое rest оператор при деструктуризации массива?
rest оператор (...rest) используется для сбора остальных элементов массива, которые не были присвоены другим переменным при деструктуризации. Он создает новый массив с этими элементами.
145
Какие значения будут присвоены переменным при деструктуризации массива, если в массиве меньше элементов, чем в присваивании?
Отсутствующие значения будут равны undefined, если им не было задано значение по умолчанию.
146
Как задать значение по умолчанию при деструктуризации массива?
Значение по умолчанию задается путем присваивания значения переменной в квадратных скобках при деструктуризации, например: let [name = "Guest"] = ["Julius"];
147
Как использовать prompt при деструктуризации массива?
Prompt можно использовать для задания значения переменной при деструктуризации массива, если не хватает элементов в массиве. Например, можно написать let [name = prompt('name?')] = ["Julius"];, и в этом случае prompt будет выполнен только если выйти за пределы массива.
148
Что такое деструктуризация объекта в JavaScript?
Деструктуризация объекта - это способ присваивания свойств объекта переменным.
149
Как задать другие имена переменным при деструктуризации объекта?
Другие имена переменным можно задать при помощи синтаксиса { sourceProperty: targetVariable }.
150
Как задать значения по умолчанию при деструктуризации объекта?
Значения по умолчанию можно задать при помощи оператора "=" после имени переменной, например: let {width = 100, height = 200, title} = options;
151
Можно ли использовать вместе задание переменной и значение по умолчанию?
Да, можно. Например: let {width: w = 100, height: h = 200, title} = options;
152
Что такое rest оператор при деструктуризации объекта?
Rest оператор при деструктуризации объекта позволяет сохранить все остальные свойства объекта в отдельный объект.
153
Что делает rest оператор при деструктуризации объекта?
Rest оператор при деструктуризации объекта позволяет создать новый объект, содержащий оставшиеся свойства исходного объекта.
154
Какая переменная будет содержать оставшиеся свойства объекта после использования rest оператора?
Переменная, указанная после оператора rest (обычно это три точки), будет содержать оставшиеся свойства объекта в виде нового объекта.
155
Можно ли использовать оператор rest без указания других переменных?
Да, можно. В этом случае оператор rest будет создавать новый объект, содержащий все свойства исходного объекта.
156
Что такое вложенная деструктуризация?
Вложенная деструктуризация - это деструктуризация объекта, содержащего вложенные объекты или массивы.
157
Каким образом можно получить значения вложенного объекта при деструктуризации?
Можно использовать синтаксис с двоеточием, например: let {nestedObject: {property}} = someObject.
158
Как получить значения элементов вложенного массива при деструктуризации объекта?
Можно использовать синтаксис с квадратными скобками, например: let {nestedArray: [firstElement, secondElement]} = someObject.
159
Можно ли использовать значения по умолчанию при вложенной деструктуризации?
Да, значения по умолчанию можно использовать при вложенной деструктуризации, так же как и в обычной деструктуризации объектов.
160
Что такое умные параметры функций?
Умные параметры функций - это использование деструктуризации объектов в параметрах функции, чтобы иметь возможность передавать аргументы в любом порядке и присваивать им значения по умолчанию.
161
Как передать значение аргумента функции по умолчанию без явного указания этого аргумента при вызове функции?
В параметрах функции при деструктуризации объекта присвоить этому аргументу значение по умолчанию
162
Как присвоить значение по умолчанию для деструктурированного объекта в параметрах функции, чтобы при вызове можно было не писать {} в аргументы?
Можно присвоить пустой объект {} объектной деструктуризации
163
Как создать объект даты, представляющий текущую дату и время?
new Date()
164
Как создать объект даты, представляющий определенный момент времени, например, 1 января 2000 года 12:30 по UTC?
new Date(Date.UTC(2000, 0, 1, 12, 30))
165
Как получить год из объекта даты?
Метод getFullYear(): dateObj.getFullYear()
166
Как получить месяц (от 0 до 11) из объекта даты?
Метод getMonth(): dateObj.getMonth()
167
Как получить день месяца из объекта даты?
Метод getDate(): dateObj.getDate()
168
Как получить день недели (от 0 до 6, где 0 - воскресенье) из объекта даты?
Метод getDay(): dateObj.getDay()
169
Как получить количество миллисекунд, прошедших с 1 января 1970 года UTC+0, из объекта даты?
Метод getTime(): dateObj.getTime()
170
Как установить год в объекте даты?
Метод setFullYear(): dateObj.setFullYear(year)
171
Как установить месяц (от 0 до 11) в объекте даты?
Метод setMonth(): dateObj.setMonth(month)
172
Как установить день месяца в объекте даты?
Метод setDate(): dateObj.setDate(date)
173
Что произойдет, если при создании объекта Date указать день больше, чем максимальное количество дней в месяце?
Объект Date автоматически исправит указанный день, установив первый день следующего месяца.
174
Что произойдет, если при создании объекта Date указать день равный 0?
Объект Date автоматически исправит указанный день, установив последний день предыдущего месяца.
175
Можно ли устанавливать значения компонентов даты за пределы обычного диапазона?
Да, значения компонентов даты можно устанавливать за пределы обычного диапазона, например, отрицательные значения.
176
Как преобразовать объект Date в число?
Объект Date можно преобразовать в число, используя унарный плюс перед объектом Date или вызовом метода getTime() у объекта Date.
177
Как получить разность между двумя объектами Date в миллисекундах?
Для получения разности между двумя объектами Date в миллисекундах, можно вычислить разницу между их числовыми значениями, полученными с помощью преобразования объектов Date в числа, или вызвав метод getTime() у объектов Date и вычислив разницу между их возвращаемыми значениями.
178
Что такое Date.now() и почему лучше использовать его, чем создание объекта Date?
Date.now() - это метод, который возвращает текущую метку времени в миллисекундах с 1 января 1970 года. Его лучше использовать, чем создание объекта Date, потому что он не создает промежуточный объект, что ускоряет время выполнения программы.
179
Что возвращает метод Date.parse(str)?
Метод Date.parse(str) возвращает таймстамп (количество миллисекунд с 1 января 1970 года UTC+0), считывая дату из строки.
180
В каком формате должна быть строка для корректной работы метода Date.parse(str)?
Формат строки для корректной работы метода Date.parse(str) - YYYY-MM-DDTHH:mm:ss.sssZ, где YYYY-MM-DD - год-месяц-день, HH:mm:ss.sss - время (часы, минуты, секунды и миллисекунды), а Z - необязательная часть, обозначающая часовой пояс в формате +-hh:mm. Если указать просто букву Z, то получим UTC+0.
181
Можно ли сразу создать объект Date из таймстампа, полученного методом Date.parse(str)?
Да, посредством new Date
182
Что такое бенчмаркинг?
Бенчмаркинг - это процесс измерения производительности компьютерных систем или компонентов, путем сравнения времени выполнения определенных задач или алгоритмов.
183
Почему для получения более точных результатов бенчмаркинга нужно запускать набор тестов несколько раз?
Нужно запускать набор тестов несколько раз, чтобы получить более точные результаты бенчмаркинга и уменьшить влияние факторов, которые могут повлиять на производительность во время выполнения тестов.
184
Как можно проводить бенчмаркинг на JS?
с помощью let start=Date.now() запоминать время до начала выполнения какого-то выражения/функции, а после вычесть из текущего времени переменную start. Лучше смотреть пример на гитхабе. Но лучше использовать performance.now()
185
Что такое JSON?
JSON - это текстовый формат представления данных, основанный на JavaScript.
186
Какие типы данных поддерживает JSON?
JSON поддерживает объекты, массивы и примитивные типы данных, такие как строки, числа, булевы значения и null.
187
Какие кавычки должны быть использованы для ключей в JSON?
Ключи в JSON должны быть заключены в двойные кавычки.
188
Поддерживает ли JSON комментарии?
JSON не поддерживает комментарии.
189
Сколько методов для работы с JSON существует и как они называются?
Существует два метода для работы с JSON: JSON.stringify() и JSON.parse().
190
Какой метод JSON используется для преобразования объекта в JSON?
Для преобразования объекта в JSON используется метод JSON.stringify().
191
Какие параметры принимает метод JSON.stringify()?
Метод JSON.stringify() принимает значение для преобразования, массив свойств для преобразования или функцию соответствия function(key, value) и дополнительные отступы (для форматирования).
192
Какой метод JSON используется для преобразования JSON в объект?
Для преобразования JSON в объект используется метод JSON.parse().
193
Какой параметр принимает метод JSON.parse()?
Метод JSON.parse() принимает строку в формате JSON для преобразования в объект и функцию, которая будет вызываться для каждой пары (ключ, значение) и может преобразовывать значение.
194
Что такое сериализованный объект в JSON?
Это объект, преобразованный в JSON с помощью метода JSON.stringify().
195
Какие свойства объекта в JS пропускаются при преобразовании в JSON?
JSON.stringify() пропускает методы (свойства-функции), символьные ключи и значения, а также свойства со значением undefined.
196
Что произойдет при попытке преобразовать объект с циклической ссылкой в JSON?
Будет ошибка "Преобразование циклической структуры в JSON".
197
Каким методом можно отфильтровать циклические ссылки при преобразовании объекта в JSON?
Можно использовать аргумент replacer метода JSON.stringify().
198
Что такое replacer в методе JSON.stringify()?
replacer - это функция или массив, которые позволяют исключить или преобразовать определенные свойства при преобразовании объекта в JSON формат.
199
Как передать массив свойств в качестве replacer в метод JSON.stringify()?
Массив свойств передается вторым аргументом метода JSON.stringify(). Например: JSON.stringify(obj, ['property1', 'property2'])
200
Как исключить определенное свойство объекта из JSON формата с помощью replacer?
Для исключения свойства из JSON формата в функции replacer нужно вернуть значение undefined при обнаружении нужного свойства. Например: JSON.stringify(obj, function(key, value) { if (key === 'propertyToExclude') return undefined; return value; });
201
Как преобразовать определенное свойство объекта при преобразовании в JSON формат с помощью replacer?
Для преобразования свойства объекта в JSON формате в функции replacer нужно вернуть новое значение свойства. Например: JSON.stringify(obj, function(key, value) { if (key === 'propertyToTransform') return value.toUpperCase(); return value; });
202
Как работает функция replacer при преобразовании объекта с циклическими ссылками в JSON формат?
Функция replacer вызывается для каждого свойства объекта, включая свойства во вложенных объектах. Если объект содержит циклическую ссылку, то JSON.stringify() не может преобразовать его в JSON формат. Для предотвращения ошибки вызова функции replacer можно передать в качестве второго аргумента массив свойств или использовать глубокую копию объекта без циклических ссылок.
203
Зачем нужен аргумент space в методе JSON.stringify()?
этот аргумент задает количество пробелов, используемых для форматирования – для красивого вывода.
204
Какое свойство объекта используется для преобразования его в JSON?
Свойство toJSON.
205
Какой метод встроенного объекта используется для преобразования в JSON со специальным поведением?
Метод toJSON.
206
Как можно задать собственное поведение преобразования объекта в JSON?
Можно определить метод toJSON у объекта, который будет возвращать нужное значение для JSON-представления объекта. Из темы по хинтам.
207
Как преобразовать строку JSON в JavaScript объект?
Строку JSON можно преобразовать в объект JavaScript с помощью метода JSON.parse().
208
Как использовать reviver функцию при парсинге JSON?
Функцию reviver можно передать в качестве второго аргумента метода JSON.parse(). Она вызывается для каждого свойства объекта в процессе его преобразования из JSON в объект JavaScript и может использоваться для изменения преобразования свойств объекта.
209
Как можно преобразовать свойство объекта из строки в объект типа Date при парсинге JSON?
Можно передать функцию reviver в метод JSON.parse(), которая будет проверять свойство объекта на соответствие определенному условию (например, наличие определенного ключа) и, в случае совпадения, преобразовывать его в объект типа Date.