Типы данных Flashcards
Какие примитивные типы данных существуют?
существует 7 примитивных типов данных: string, number, boolean, symbol, null, undefined, bigint.
Для чего используются объекты-обертки String, Number, Boolean, Symbol, BigInt?
объекты-обертки String, Number, Boolean, Symbol, BigInt используются для расширения функционала примитивов. Они включают все методы примитивов, что позволяет использовать методы для примитивов и при этом сохранить скорость работы примитивов на прежнем уровне.
Могут ли создаваться объекты-обертки для примитивных типов данных?
да, объекты-обертки могут быть созданы для примитивных типов данных через обращение к свойству примитива через точку.
Как не рекомендуется использовать конструкторы String, Number, Boolean?
Конструкторы String, Number, Boolean не рекомендуется использовать с оператором new, так как могут быть ошибки.
Можно ли использовать конструкторы String, Number, Boolean без оператора new?
да, конструкторы String, Number, Boolean могут быть использованы без оператора new для преобразования типов данных.
Имеют ли null и undefined объекты-обёртки и методы?
Нет, у null и undefined нет объектов-обёрток и методов.
Что происходит при попытке создания свойства у null или undefined?
При попытке создания свойства у null или undefined возникает ошибка.
Что происходит, когда пытаются создать свойство у примитивного типа данных?
Если попытаться добавить свойство к примитиву, то JS создаст временный объект-обертку с этим свойством, но после завершения операции объект-обертка уничтожится и изменения не сохранятся.
Что такое 64-битный формат IEEE-754?
64-битный формат IEEE-754 — это стандарт для представления чисел с плавающей точкой в компьютерах. В JS он используется для хранения чисел типа number, который использует 64 бита для представления числа и включает знак, мантиссу и экспоненту.
Как записать число в научном формате?
Число можно записать в научном формате, используя экспоненту: например, let billion = 1e9; // 1000000000.
Как представить число в системе счисления с основанием 16?
Число можно представить в системе счисления с основанием 16, используя префикс 0x: let a = 0xff; // 255.
Какие методы округления чисел есть в JavaScript?
В JavaScript есть несколько методов округления чисел: Math.floor (округление в меньшую сторону), Math.ceil (округление в большую сторону), Math.round (округление до ближайшего целого) и Math.trunc (удаление дробной части без округления).
Как округлить число до определенного количества знаков после запятой?
Число можно округлить до определенного количества знаков после запятой, используя метод toFixed(n): let num = 12.34; alert(num.toFixed(1)); // “12.3”.
Как решить проблему потери точности при работе с дробными числами в JavaScript?
Наиболее надежный способ избежать проблемы потери точности при работе с дробными числами в JavaScript - использовать метод toFixed(n), который округляет число до определенного количества знаков после запятой.
Что такое IEEE-754 и как это связано с нулями 0 и -0?
IEEE-754 - это стандарт для представления чисел с плавающей точкой в компьютерах. Этот стандарт использует прямой код, из-за чего возникают два разных представления для нуля: положительный 0 и отрицательный 0 (-0).
Что делает функция isNaN() и как она отличается от проверки на равенство с NaN?
isNaN() преобразует свой аргумент в число и проверяет, является ли оно NaN. При этом, NaN не равен ничему, даже самому себе, поэтому проверка на равенство с NaN с помощью оператора === всегда возвращает false.
Что делает функция isFinite() и как она отличается от проверки на равенство с Infinity/-Infinity?
isFinite() преобразует свой аргумент в число и возвращает true, если это число является конечным (то есть не равно NaN/Infinity/-Infinity). Проверка на равенство с Infinity/-Infinity с помощью оператора === также может использоваться для определения бесконечных значений, но isFinite() более удобна в использовании.
Какие особенности есть у функции Object.is()?
Object.is() осуществляет строгое сравнение значений с учетом нескольких особых правил:
- он возвращает true для двух NaN, в отличие от оператора ===;
- он возвращает false для двух нулей с разными знаками, в отличие от оператора ===;
- в остальных случаях Object.is() эквивалентен оператору ===.
Какие функции используют для явного преобразования строки в число и как они отличаются друг от друга?
Для явного преобразования строки в число используют функции +/Number(), parseInt() и parseFloat(). Отличие между ними в том, что +/Number() преобразуют строку в число с учетом возможности наличия десятичной точки, а функции parseInt() и parseFloat() преобразуют только целое или десятичное число соответственно, игнорируя любой другой текст, находящийся в строке.
Как использовать функцию parseInt() для чтения чисел в других системах счисления?
Для чтения чисел в других системах счисления с помощью функции parseInt() нужно передать второй параметр radix, указывающий на основание системы счисления. Значение radix должно быть между 2 и 36, по умолчанию оно равно 10.
Какой формат используется для строк в JavaScript?
Всегда используется формат UTF-16, независимо от кодировки страницы.
Какие типы кавычек можно использовать для создания строк в JavaScript?
Можно использовать двойные кавычки (“ “), одинарные кавычки (‘ ‘), и обратные кавычки (``).
Какой преимущественный метод работы с обратными кавычками в JavaScript?
Обратные кавычки могут содержать выражения и позволяют записывать более одной строки в одну.
Какие символы оставлены для обратной совместимости, но сейчас не используются?
\b, \f, \v
Как задать символ с шестнадцатеричным Юникодным кодом XX?
\xXX
Как задать символ в кодировке UTF-16 с шестнадцатеричным кодом XXXX?
\uXXXX
Как задать символ в кодировке UTF-32 с шестнадцатеричным кодом от U+0000 до U+10FFFF?
\u{X…XXXXXX} (от 1 до 6 шестнадцатеричных цифр)
Что содержит свойство length у строки?
Длину строки
Как получить символ по определенной позиции в строке?
С помощью квадратных скобок str[pos] или с помощью метода charAt(pos) (старый метод).
Что вернется при попытке получить символ в позиции, которой нет в строке с помощью str[pos]?
undefined.
Что вернется при попытке получить символ в позиции, которой нет в строке с помощью метода charAt(pos)?
Пустая строка
Как можно итерироваться по строке посимвольно?
С помощью цикла for..of.
Можно ли изменить содержимое строки?
Нельзя. Строки неизменяемы.
Что делает метод str.indexOf(substr)?
Метод str.indexOf(substr) ищет подстроку substr в строке str и возвращает позицию первого символа найденной подстроки. Если искомая подстрока не найдена, метод возвращает -1.
Что делает необязательный второй аргумент метода str.indexOf(substr, position)?
Необязательный второй аргумент метода str.indexOf(substr, position) позволяет начать поиск подстроки с определенной позиции position в строке str.
Что делает метод str.lastIndexOf(substr)?
Метод str.lastIndexOf(substr) ищет последнее вхождение подстроки substr в строке str и возвращает позицию первого символа найденной подстроки. Если искомая подстрока не найдена, метод возвращает -1.
Как исправить ошибку, возникающую при проверке методом str.indexOf() в условии if?
Чтобы избежать ошибки, возникающей при проверке методом str.indexOf() в условии if, нужно сравнить результат метода с -1, например, используя следующую конструкцию: if (str.indexOf(“Widget”) != -1). Метод “includes” – более современный.
Что такое метод includes и какой тип данных он возвращает?
Метод includes проверяет, содержится ли подстрока в строке, и возвращает значение true, если содержится, и false, если не содержится.
Как использовать метод includes для поиска подстроки в определенной позиции?
Метод includes имеет второй аргумент, который позволяет начать поиск с определенной позиции. Например, “Midget”.includes(“id”, 3) вернет false, поскольку поиск начинается с позиции 3.
Что делает метод startsWith для строки?
Метод startsWith проверяет, расположена ли искомая подстрока в начале строки. Например, “Widget”.startsWith(“Wid”) вернет true, поскольку “Wid” является началом “Widget”.
Зачем нужен метод endsWith в строках?
Метод endsWith проверяет, расположена ли искомая подстрока в конце строки. Например, “Widget”.endsWith(“get”) вернет true, поскольку “get” является концом “Widget”.
Что такое метод slice и какие аргументы он принимает?
Метод slice возвращает часть строки в диапазоне [start, end). Он принимает два аргумента: start - начальную позицию, end - конечную позицию.
Как использовать метод slice, если необходимо получить часть строки от начальной позиции до конца строки?
Если необходимо получить часть строки от начальной позиции до конца строки, можно вызвать метод slice с одним аргументом - начальной позицией. Например, “stringify”.slice(2) вернет “ringify”.
Что произойдет, если задать отрицательное значение для аргументов start и end в методе slice?
Если задать отрицательное значение для аргументов start и end в методе slice, то отсчет будет идти с конца строки. Например, “stringify”.slice(-4, -1) вернет “gif”.
Что такое метод substring и какие аргументы он принимает?
Метод substring возвращает часть строки в диапазоне [start, end). Он принимает два аргумента: start - начальную позицию, end - конечную позицию.
Какой метод строки возвращает часть строки от start длины length?
Метод substr.
Можно ли задать отрицательные аргументы для метода substring?
Нет, отрицательные аргументы не поддерживаются для метода substring.
Что возвращает метод slice, если задать start больше end:
1. для строки;
2. для массива.
Метод slice вернет:
1. пустую строку;
2. пустой массив.
Как сравниваются строки?
Строки сравниваются исходя из кодировки каждого символа в строке.
Что возвращает метод str.codePointAt(pos)?
Метод str.codePointAt(pos) возвращает код символа, находящего на позиции pos.
Что делает метод String.fromCodePoint(code)?
Метод String.fromCodePoint(code) создает символ по коду code.
Какое правильное сравнение строк при работе с разными языками?
Правильное сравнение при работе с разными языками - метод str.localeCompare(str2), который возвращает:
- -1, если str < str2,
- 1, если str > str2,
- 0, если str = str2.
Какие два способа объявления массива существуют?
let arr = new Array();
let arr = [];
Как получить последний элемент массива? Какими методами можно это сделать?
Два способа:
arr[arr.length - 1]
arr.at(-1) (новый метод)
Какие методы используются для добавления и удаления элементов в конец массива?
Для добавления элементов в конец массива используется метод push().
Для удаления последнего элемента массива используется метод pop().
Какие методы используются для добавления и удаления элементов в начало массива?
Для добавления элементов в начало массива используется метод unshift().
Для удаления первого элемента массива используется метод shift().
Почему методы pop/push эффективнее, чем shift/unshift?
Это связано с тем, что методы shift/unshift работают с началом массива и при удалении или добавлении элемента приходится перезаписывать индексы всех оставшихся элементов. Для методов pop/push этого делать не нужно.
Какое свойство массива хранит не количество элементов, а индекс последнего элемента + 1?
Свойство length хранит не количество элементов, а индекс последнего элемента + 1.
Как можно очистить массив?
С помощью length можно легко очистить массив: arr.length = 0;
Перечислите некоторые ошибки, которые могут возникнуть при работе с массивами.
Некоторые ошибки, которые могут возникнуть при работе с массивами:
- добавление нечислового свойства, например, arr.test = 5;
- создание «дыр»: например, добавление arr[0], затем arr[1000];
- заполнение массива в обратном порядке.
Как можно создать массив заданной длины?
Массив заданной длины можно создать, вызвав конструктор new Array() с одним аргументом, который задает длину массива. Например:
let arr = new Array(5); // создастся массив с длиной 5.
Какой метод возвращает список элементов массива через запятую?
Метод toString() возвращает список элементов массива через запятую. Это связано с тем, что в конструкторе массиве имеется обработчик хинта, который и занимается выводом элементов в виде строки.
Какой метод массивов можно использовать для добавления, удаления и замены элементов в массиве?
Метод splice.
Что произойдет, если попытаться удалить элемент массива с помощью оператора delete?
Элемент удалится, а вместо него в массиве будет значение undefined, так как удаляется значение “по ключу”.
Какие параметры принимает метод splice?
Метод splice принимает следующие параметры: index - начальная позиция, может быть отрицательной, тогда отсчет начинается с конца, deleteCount - количество элементов, которое необходимо удалить, elem1, …, elemN - добавление элементов в массив на место удаленных.
Что возвращает метод splice?
Метод splice возвращает массив удаленных элементов.
Что возвращает метод slice()?
Метод slice() возвращает новый массив, в который копирует элементы массива в диапазоне от start до end (не включая end).
Что произойдет, если вызвать метод slice() без аргументов?
Если вызвать метод slice() без аргументов, то будет создана копия исходного массива.
Что делает метод массива concat()?
Метод concat() создает новый массив, в который копирует элементы других массивов или просто вставляет какие-либо аргументы.
Как можно скопировать объект в массив при использовании метода массива concat()?
Для того чтобы скопировать объект в массив при использовании метода concat(), объекту нужно применить специальное свойство Symbol.isConcatSpreadable и обязательно добавить свойство length, чтобы объект получился подобным массиву.
Что делает метод forEach() у массивов?
Метод forEach() перебирает каждый элемент массива и выполняет заданную функцию для каждого элемента.
Какой метод массивов используется для поиска индекса элемента в массиве?
Для поиска индекса элемента в массиве можно использовать методы indexOf(), lastIndexOf().
Какие значения возвращает метод indexOf() при поиске элемента в массиве?
Метод indexOf() возвращает индекс элемента, если он был найден в массиве, и -1, если элемент не найден.
Как работает метод includes() при поиске элемента в массиве и в чем отличие от метода indexOf()?
Метод includes() также ищет элемент в массиве, но в отличие от метода indexOf() он умеет правильно обрабатывать значение NaN. Метод includes() возвращает true, если элемент найден, и false в противном случае.
Что делает метод find() у массивов?
Метод find() перебирает каждый элемент массива и выполняет заданную функцию для каждого элемента. Если функция вернула true для текущего элемента, метод find() возвращает этот элемент и прекращает перебор. Если все итерации оказались ложными, возвращается undefined.
Какой метод массивов используется для поиска индекса элемента в массиве, аналогичный методу find(), но возвращающий не сам элемент, а его индекс?
Метод findIndex(). Если элемент не найден, то возвращает -1
Что такое метод filter и как он работает?
Метод filter() используется для фильтрации массива. Он принимает функцию, которая проверяет каждый элемент массива на условие и возвращает новый массив с элементами, для которых условие выполняется.
В чем отличие метода filter от метода find?
Метод filter() возвращает массив элементов, которые прошли проверку на соответствие условию, в то время как метод find() возвращает первый элемент массива, который прошел проверку на соответствие условию.
Что такое метод map и как он работает?
Метод map() используется для преобразования массива. Он принимает функцию, которая вызывается для каждого элемента массива и возвращает новый массив с результатами выполнения этой функции для каждого элемента.
Что такое метод reduce и как он работает?
Метод reduce() используется для вычисления единого значения на основе массива. Он принимает функцию, которая вызывается для каждого элемента массива и принимает два аргумента: результат предыдущего вызова функции и текущий элемент массива. Метод reduce() возвращает результат выполнения этой функции.
Что такое метод reduceRight и в чем его отличие от метода reduce?
Метод reduceRight() выполняет ту же функцию, что и метод reduce(), но перебор элементов массива начинается с конца массива.
Что делает метод split() для строк?
Метод split() для строк разделяет строку в элементы массива через разделитель, который передается аргументом.
Как работает метод join() для массивов?
Метод join() создает строку из элементов массива, вставляя между ними заданный разделитель.