Javascript типы данных: Типы данных

Содержание

Типы данных | JavaScript Camp

Как вы уже знаете TypeScript является статически типизированным языком. Статически типизированный язык, это язык программирования, который имеет систему типов. Зачем же нужны типы? Типы данных используются для добавления статических ограничений на программные элементы, такие как функции, переменные и свойства. Это позволяет компилятору и средствам разработки осуществлять более тщательную проверку и поддержку в процессе разработки. Хоть JavaScript является динамически типизируемым языком, типы там всё же присутствуют, но присваивание происходит во время выполнения кода, а не во время компиляции. Все типы JavaSсript присутствуют и в TypeScript, но TypeScript по-другому с ними работает и добавляет свои типы.

Типы в TypeScript​

Все типы в TypeScript являются подтипами главного типа, которым является тип any. Тип any — единственный, который может представлять любое значение JavaScript без всяких ограничений. Все остальные типы накладывают определенные ограничения на свои значения.

Any​

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

let variable: any

Пример

let isAny: any
console.log(isAny + ', Тип: ' + typeof isAny)
isAny = 'string1'
console.log(isAny + ', Тип: ' + typeof isAny)
isAny = 4
console.log(isAny + ', Тип: ' + typeof isAny)
isAny = {}
console.log(isAny + ', Тип: ' + typeof isAny)

Boolean​

Тип boolean является логическим типом и представлен значениями true и false. Объявляется при помощи ключевого слова boolean.

Пример

let isVar1: boolean = false,
isVar2 = true
console.log(isVar1 + ', Тип: ' + typeof isVar1)
console.log(isVar2 + ', Тип: ' + typeof isVar2)

Number​

В TypeScript, как и в JavaScript, все производные от number являются 64-битными числами двойной точности с плавающей запятой. Кроме десятичного и шестнадцатеричного формата, поддерживаются бинарный и восьмеричный, введенные в ECMAScript 2015.

Пример

let isNumBin: number = 0b00110111, // Binary
isNumOct: number = 0o67, // Octal
isNumDec: number = 55, // Decimal
isNumHex = 0x37 // Hex
console.log(isNumHex + 0xf + ', Тип: ' + typeof isNumHex)

String​

Тип string представляет собой последовательность символов в кодировке Unicode UTF-16. Строки могут быть заключены в одинарные или двойные кавычки, а также в обратные апострофы (инициаторы так называемых шаблонных строк).

Пример

let isVar1: string = 'строка',
isVar2 = 'другая строка'
console.log(isVar1 + ', Тип: ' + typeof isVar1)
console.log(isVar2 + ', Тип: ' + typeof isVar2)

Symbol​

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

Значения типа symbol создаются с помощью вызова конструктора Symbol.

let sym1 = Symbol()

let sym2 = Symbol('key') // Необязательный строковый ключ

Void​

Тип void это нечто противоположное any, то есть отсутствие каких-либо типов. Чаще всего он используется в качестве возвращаемого типа функций, которые не возвращают никакого значения.

Пример

let learnTypeScript = (): void => {
console.log('Эта функция ничего не возвращает!')
}

console.log(learnTypeScript() + ', Тип: ' + typeof learnTypeScript())

Never​

Тип never представляет тип, значение которого никогда не наступает. Например, never является типом, который возвращает функция, которая всегда бросает исключения или выход из которой никогда не происходит (например, бесконечный цикл). Переменные также могут иметь данный тип, например, для того, чтобы никогда не принимать значение true.

Пример

let error = (message: string): never => {
throw new Error(message)
}

Null/Undefined​

В TypeScript оба типа undefined и null фактически имеют имена undefined и null соответственно. Как и void, сами по себе они не особо полезны:

let u: undefined = undefined
let n: null = null

Структуры​

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

Array (массив)​

Тип Array используется для указания элементов массива. Определить массив можно двумя способами:

  • []
  • Array<elemType>

В первом методе вы указываете тип элементов массива, за которым следует [], который обозначает массив этого типа.

Пример

let isArrOfStr: string[] = ['string1', 'string2'],
isArrOfNum: number[] = [1, 2, 3, 4, 5]
console.log(isArrOfNum[4] + ', Тип: ' + typeof isArrOfNum)

Tuple (кортеж)​

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

Пример

let isTuple: [string, boolean] = ['string1', false]
console.log(isTuple[0] + ', Тип: ' + typeof isTuple[0])
console.log(isTuple[1] + ', Тип: ' + typeof isTuple[1])

Enum (перечисление)​

Тип enum используется для объявления перечисления — отдельного типа, который состоит из набора именованных констант, называемого списком перечислителей. Перечисления пришли в TypeScript из C#. Например, для вашего удобства вы можете создать enum дней. По умолчанию первый перечислитель имеет значение 0, и значение каждого последующего перечислителя инкрементируется на единицу.

Пример

enum isEnumAnimal {cat, rabbit, horse, dog, hen, cow, sheep}
console.log(isEnumAnimal.rabbit + ', Тип: ' + typeof isEnumAnimal.rabbit)
console.log(isEnumAnimal[1] + ', Тип: ' + typeof isEnumAnimal[1])

enum isEnumWeek {Mon = 34, Tue, Wed, Thu, Fri, Sat, Sun}
console.log(isEnumWeek[34] + ' or ' + isEnumWeek.Tue + ', Тип: ' + typeof isEnumWeek)

Работа с типами​

Для начала следует рассказать основные моменты для работы с типами в TypeScript.

Аннотация типов​

В TypeScript аннотация типа или указание типа осуществляется с помощью оператора двоеточия : type, после которого следует идентификатор типа. TypeScript является статически типизированным языком, поэтому после того как идентификатор будет связан с типом, изменить тип будет невозможно.

Пример

// let variable: type = value
let isNumber: number = 777, // явно
anotNumber = 888, // неявно
isString: string = 'string1', // явно
anotString = 'string2' // неявно
console.log('isNumber - ' + typeof isNumber + '\n anotNumber - ' + typeof anotNumber)

Так же присвоить тип переменной можно через конструкцию Union.

typeof (Запрос типа)​

Механизм запроса типа Type Queries позволяет получить тип, связанный со значением по его идентификатору и в дальнейшим использовать его как обычный тип. Запрос типа осуществляется оператором typeof, после которого идет идентификатор, ссылающийся на значение. Запрос типа также может располагаться в местах указания типа.

let isVar1: string
let isVar2: typeof isVar1

Пример

let isString: string = 'string'
enum isEnumAnimal {cat, rabbit, horse}
console.log('isString - ' + typeof isString)
console.log('isEnumAnimal - ' + typeof isEnumAnimal)

Объединения​

Объединение Union — это мощный механизм, позволяющий создавать из множества существующих типов логическое условие, по которому данные могут принадлежать только к одному из указанных типов. Объединение указывается с помощью оператора прямой черты |, по обе стороны которой располагаются типы данных.

let variable = type1 | type2 | type3

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

Пример

let isUnion: string | number | boolean
isUnion = 1
console.log(isUnion + ', Тип: ' + typeof isUnion)

isUnion = false
console.log(isUnion + ', Тип: ' + typeof isUnion)

isUnion = 'Hello'
console.log(isUnion + ', Тип: ' + typeof isUnion)

Пересечение​

Пересечение Intersection — механизм TypeScript, который позволяет рассматривать множество типов данных как единое целое. Пересечение указывается с помощью оператора амперсанда &, по обе стороны которого указываются типы данных.

let variable: type1 & type2 & type3

Переменной, которой был указан тип пересечение type1 и type2 и type3, должно быть присвоено значение, принадлежащее к типам type1 и type2 и type3 одновременно. Другими словами, значение должно обладать всеми обязательными признаками каждого типа, определяющего пересечение.

Пример

interface Colorful {
color: string
}
interface Circle {
radius: number
}

// ---cut---
function draw(circle: Colorful & Circle) {
console.log(`Color was ${circle.color}`)
console.log(`Radius was ${circle.radius}`)
}

// okay
draw({ color: 'blue', radius: 42 })

// oops
draw({ color: 'red', raidus: 42 })

Псевдонимы типов​

Для любого типа можно создать его псевдоним и использовать его в дальнейшем. Псевдоним типа объявляется при помощи ключевого слова type.

type isAlias = type

Пример

type isAlias = string | number | boolean

let isVar: isAlias

isVar = 1

console.log(isVar + ', Тип: ' + typeof isVar)

isVar = false

console.log(isVar + ', Тип: ' + typeof isVar)

isVar = 'Hello'

console.log(isVar + ', Тип: ' + typeof isVar)

Тип Assertions​

Тип assertion представляет модель преобразования значения переменной к определенному типу. Обычно в некоторых ситуациях одна переменная может представлять какой-то широкий тип, например any, который по факту допускает значения различных типов. Однако при этом нам надо использовать переменную как значение строго определенного типа. И в этом случае мы можем привести к этому типу. Есть две формы приведения.

  • Ключевое слово as
  • Оператор <>

Первая форма заключается в применении оператора as:

Пример

let isAny: any = 777
let isNumber = isAny as number
console.log(isNumber + ', Тип: ' + typeof isNumber)

Вопросы​

Какой самый главный тип данных в TypeScript?

  1. any
  2. never
  3. void

В какой кодировке символы типа String?

  1. ASCII
  2. Unicode UTF-16
  3. Windows 1251

Чем является тип Number?

  1. 16-битными числами
  2. 32-битными числами
  3. 64-битными числами

Для чего переменные могут принимать тип never?

  1. Чтобы возвращать только true
  2. Чтобы возвращать только false
  3. Чтобы никогда не возвращать true

Какая из структур используется для указания каждому элементу свой тип данных?

  1. array
  2. tuple
  3. enum

С помощью чего происходит аннотация типа?

  1. #
  2. as
  3. :

C помощью чего можно объеденить типы?

  1. |
  2. \
  3. &

С помощью чего указывается пересечение типов?

  1. $
  2. |
  3. &

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

Ссылки​

  1. TypeScript Lang
  2. Спривочник TypeScript
  3. Сanonium

Contributors ✨​

Thanks goes to these wonderful people (emoji key):


IIo3iTiv
📖

Dmitriy Vasilev
💵

Переменные и типы данных в JavaScript

  • Главная >
  • Каталог >
  • JavaScript Стартовый >
  • Переменные и типы данных в JavaScript

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

Для просмотра всех видеокурсов ITVDN, представленных в Каталоге, а также для получения доступа к учебным материалам и онлайн тестированию купите подписку Купить подписку

№1

Введение

0:30:08

Материалы урокаДомашние заданияТестирование

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

Читать дальше…

Структура кода

0:24:36

Материалы урокаДомашние заданияТестирование

Перед началом изучения синтаксических конструкций мы узнаем основные правила оформления кода. Начнем с определения понятия «инструкция» и узнаем, чем инструкции отличаются от комментариев в коде. В этом уроке вы также научитесь подключать JavaScript к HTML-странице и узнаете, в чём разница между интерпретацией и компиляцией кода.

Читать дальше…

Переменные и типы данных в JavaScript

0:37:39

Материалы урокаДомашние заданияТестирование

Основа любого алгоритма — это переменная. В этом уроке вы научитесь создавать переменные и константы, а также изучите типы данных, которые есть в JavaScript. JavaScript – это язык программирования с динамической типизацией, поэтому вы увидите, что работать с переменным достаточно просто.

Читать дальше…

Строки и преобразование типов

0:36:53

Материалы урокаДомашние заданияТестирование

Большая часть сценариев, написанных на JavaScript, взаимодействует с пользователем. Результаты работы сценариев отображаются пользователю в виде текста; информация, которую пользователь передает в сценарий, тоже приходит в виде текста. Этот урок объясняет, как работать со строковым типом данных (типом данных, который может содержать текстовые значения), а также объясняет основные способы преобразования значений различных типов.

Читать дальше…

Оператори

0:31:59

Материалы урокаДомашние заданияТестирование

Усі мови програмування для визначення виразів під час написання інструкцій використовують оператори. Наприклад, додавання, множення або порівняння значень на рівність відбувається за допомогою операторів. Завдання цього уроку — показати загальний принцип роботи з бінарними та унарними операторами і вивчити основні оператори.

Читать дальше…

Умовний оператор if

0:34:19

Материалы урокаДомашние заданияТестирование

Умовні конструкції – важлива частина будь-якого алгоритму. Без умовних конструкцій код виконуватиметься лінійно та однаково. Якщо ви хочете зробити так, щоб дії користувача могли впливати на послідовність виконання інструкцій, вам потрібно навчитися працювати з оператором if else та дізнатися про особливості роботи з типом даних Boolean. Саме це завдання вирішує цей урок.

Читать дальше…

Switch та тернарний оператор

0:28:31

Материалы урокаДомашние заданияТестирование

Оператор if — це основа розгалуження в коді, але іноді для розгалужень підійде інша умовна конструкція – switch. У цьому уроці будуть розглянуті способи використання оператора switch і ви дізнаєтесь, як працюють ключові слова, такі як case, default і break.

Також у цьому уроці буде розглянуто третю умовну конструкцію – тернарний оператор. Вона не дуже часто використовується в коді, але в певних ситуаціях може зробити код більш зрозумілим і коротким.

Читать дальше…

Цикли

0:46:25

Материалы урокаДомашние заданияТестирование

У процесі створення алгоритму часто необхідно одну і ту ж дію виконати багато разів. Замість копіювання інструкцій у коді розробник використовує цикли. У цьому уроці ви дізнаєтеся, як за допомогою циклічних конструкцій while, do/while та for повторити блок коду потрібну кількість разів.

Читать дальше…

Масиви

0:39:02

Материалы урокаДомашние заданияТестирование

Завдання, які стоять перед розробником, часто пов’язані з обробкою великої кількості даних. Якщо завдання – зберегти багато значень, у програмуванні використовуються масиви. І в цьому уроці ви дізнаєтесь, як створюються масиви, як модифікуються значення елементів масиву, а також опануєте основні інструменти для роботи з масивами в коді.

Читать дальше…

Методы массивов

0:29:20

Материалы урокаДомашние заданияТестирование

С массивами придется работать часто, а задачи, связанные с массивами, будут самыми разными. Иногда нужно добавить значение в начало массива, а иногда — в конец. Случается, что нужно удалить элемент массива или найти элемент по указанному значению. В этом уроке вы изучите несколько методов, имеющихся в каждом массиве и позволяющих легко решать такие задачи.

Читать дальше…

Функции. Часть 1

0:47:30

Материалы урокаДомашние заданияТестирование

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

Читать дальше…

Функции. Часть 2

1:02:44

Материалы урокаДомашние заданияТестирование

Функции – это очень важная часть языка JavaScript, поэтому в этом уроке вы продолжите их изучение и узнаете, что такое область видимости. Вам также будут показаны особенности создания переменных с помощью уже устаревшего ключевого слова var, но оно все же может встречаться в сценариях. Кроме того, вы узнаете о различных способах определения функций и расширите свои знания, полученные в прошлом уроке. И вдобавок ко всему разберете рекурсию и функции обратного вызова.

Читать дальше…

Объекты. Часть 1

0:27:52

Материалы урокаДомашние заданияТестирование

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

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

Читать дальше…

Объекты. Часть 2

0:43:39

Материалы урокаДомашние заданияТестирование

В этом уроке будет продолжена тема использования объектов, но будут рассмотрены более продвинутые техники работы с объектами. Вы узнаете, как можно использовать контекст в методах и как создавать фабричные функции, позволяющие наладить создание объектов с одинаковой структурой. Вы научитесь проверять наличие свойств в объекте и работать с ключевым словом in, а также узнаете, что для работы с объектами есть специальный цикл for…in. Кроме этого, в урок вошла важная тема – ссылочные типы и типы значений. Вам не раз понадобятся знания того, как работают разные типы при создании JavaScript сценариев.

Читать дальше…

ПОКАЗАТЬ ВСЕ

Регистрация через

или E-mail

Нажав на кнопку «Зарегистрироваться»,
Вы соглашаетесь с условиями использования.

Уже есть аккаунт

Получите курс бесплатно

Вы выбрали курс для изучения
«»
Чтобы получить доступ к курсу, зарегистрируйтесь на сайте.

РЕГИСТРАЦИЯ

Спасибо за регистрацию

Перейдите на почту и подтвердите Ваш аккаунт,
чтобы получить доступ ко всем
бесплатным урокам и вебинарам на сайте ITVDN.com

ПОДТВЕРДИТЬ ПОЧТУ НАЧАТЬ ОБУЧЕНИЕ

Спасибо за регистрацию

Ваш аккаунт успешно подтвержден.
Начать обучение вы можете через Личный кабинет
пользователя или непосредственно на странице курса.

НАЧАТЬ ОБУЧЕНИЕ

Подтверждение аккаунта

На Ваш номер телефона было отправлено смс с кодом активации аккаунта. Пожалуйста, введите код в поле ввода.

Отправить код еще раз

Изменить номер телефона

Ошибка

javascript типы данных и структуры данных JavaScript

Все языки программирования имеют встроенные структуры данных, но они часто отличаются от одного языка к другому. В этой статье делается попытка перечислить встроенные структуры данных, доступные в JavaScript, и их свойства; их можно использовать для построения других структур данных. По возможности проводятся сравнения с другими языками.

Динамический ввод

JavaScript — это свободно типизированный или динамический язык. Это означает, что вам не нужно заранее объявлять тип переменной. Тип будет определен автоматически во время обработки программы. Это также означает, что у вас может быть одна и та же переменная разных типов:

.

JavaScript

Копировать код

вар фоо = 42; // foo теперь число
вар фу = "бар"; // foo теперь является строкой
вар фу = истина; // foo теперь является логическим значением 

Типы данных

Последний стандарт ECMAScript определяет семь типов данных:

  • Шесть типов данных, которые являются примитивами:
    • Булево значение
    • Нуль
    • Не определено
    • Номер
    • Строка
    • Символ (новое в ECMAScript 6)
  • и Объект

Примитивные значения

Все типы, кроме объектов, определяют неизменяемые значения (значения, которые нельзя изменить). Например, в отличие от C, строки неизменяемы. Мы называем значения этих типов «примитивными значениями».

Логический тип

Boolean представляет логический объект и может иметь два значения: true и false .

Нулевой тип

Тип Null имеет ровно одно значение: null . См.

null и Null для более подробной информации.

Неопределенный тип

Переменная, которой не было присвоено значение, имеет значение undefined . См. undefined и Undefined для более подробной информации.

Тип номера

В соответствии со стандартом ECMAScript существует только один тип числа: значение двойной точности в 64-битном двоичном формате IEEE 754 (число от -(2 53 -1) до 2 53 -1). Для целых чисел нет определенного типа . Помимо возможности представлять числа с плавающей запятой, числовой тип имеет три символьных значения: +Infinity , -Infinity и NaN (не-число).

Для проверки больших или меньших значений, чем +/-Infinity , вы можете использовать константы Number.MAX_VALUE или Number.MIN_VALUE и, начиная с ECMAScript 6, вы также можете проверить, находится ли число в диапазоне чисел с плавающей запятой двойной точности, используя

Number.isSafeInteger() , а также Number.MAX_SAFE_INTEGER и Number.MIN_SAFE_INTEGER . За пределами этого диапазона числа в JavaScript больше небезопасны.

Числовой тип имеет только одно целое число, которое имеет два представления: 0 представлен как -0 и +0. («0» — это псевдоним для +0). На практике это почти не влияет. Например +0 === -0 равно true . Однако это можно заметить при делении на ноль:

.

JavaScript

Копировать код

> 42 / +0
Бесконечность
> 42/-0
-Бесконечность 

Хотя число часто представляет только свое значение, в JavaScript есть несколько бинарных операторов.

Их можно использовать для представления нескольких логических значений в одном числе с использованием битовой маскировки. Обычно это считается плохой практикой, однако JavaScript не предлагает других средств для представления набора логических значений (таких как массив логических значений или объект с логическими значениями, присвоенными именованным свойствам). Битовая маскировка также делает код более трудным для чтения, понимания и сопровождения. Может оказаться необходимым использовать такие методы в очень ограниченных средах, например, при попытке справиться с ограничением объема локального хранилища или в экстремальных случаях, когда на счету каждый бит в сети. Этот метод следует рассматривать только тогда, когда это последняя мера, которая может быть предпринята для оптимизации размера.

Тип строки

Тип JavaScript String используется для представления текстовых данных. Это набор «элементов» 16-битных целых чисел без знака. Каждый элемент в строке занимает позицию в строке.

Первый элемент имеет индекс 0, следующий — индекс 1 и так далее. Длина строки — это количество элементов в ней.

В отличие от таких языков, как C, строки JavaScript неизменяемы. Это означает, что после создания строки ее невозможно изменить. Однако по-прежнему можно создать другую строку на основе операции над исходной строкой. Например:

  • Подстрока оригинала путем выбора отдельных букв или использования String.substr() .
  • Конкатенация двух строк с помощью оператора конкатенации ( + ) или String.concat() .
Остерегайтесь «строчного ввода» кода!

Может возникнуть соблазн использовать строки для представления сложных данных. Это дает краткосрочные преимущества:

  • С помощью конкатенации легко создавать сложные строки.
  • Строки легко отлаживать (то, что вы видите напечатанным, всегда соответствует строке).
  • Строки являются общим знаменателем многих API (поля ввода, значения локального хранилища, ответы XMLHttpRequest при использовании responseText и т. д.), и может возникнуть соблазн работать только со строками.

При наличии соглашений можно представить любую структуру данных в виде строки. Это не делает его хорошей идеей. Например, с помощью разделителя можно было бы эмулировать список (в то время как массив JavaScript был бы более подходящим). К сожалению, когда разделитель используется в одном из элементов «списка», список нарушается. Можно выбрать escape-символ и т. д. Все это требует соглашений и создает ненужную нагрузку на обслуживание.

Использовать строки для текстовых данных. При представлении сложных данных анализируйте строки и используйте соответствующую абстракцию.

Тип символа

Символы являются новыми для JavaScript в ECMAScript Edition 6. Символ представляет собой уникальное и неизменное примитивное значение и может использоваться в качестве ключа свойства объекта (см. ниже). В некоторых языках программирования символы называются атомами. Вы также можете сравнить их с именованными перечислениями (enum) в C. Для получения дополнительной информации см. Symbol и Оболочка объекта Symbol в JavaScript.

Объекты

В информатике объект — это значение в памяти, на которое может ссылаться идентификатор.

Свойства

В JavaScript объекты можно рассматривать как набор свойств. При синтаксисе литерала объекта инициализируется ограниченный набор свойств; затем свойства могут быть добавлены и удалены. Значения свойств могут быть значениями любого типа, включая другие объекты, что позволяет создавать сложные структуры данных. Свойства идентифицируются с использованием ключевых значений. Значением ключа является значение строки или символа.

Существует два типа свойств объекта, которые имеют определенные атрибуты: свойство данных и свойство доступа.

Свойство данных

Связывает ключ со значением и имеет следующие атрибуты:

.
Атрибуты свойства данных
Атрибут Тип Описание Значение по умолчанию
[[Значение]] Любой тип JavaScript Значение, полученное при доступе к свойству. не определено
[[Запись]] Булево значение Если false
, свойство [[Value]] не может быть изменено.
ложь
[[Перечислено]] Булево значение Если true , свойство будет перечисляться в циклах for…in. См. также Перечислимость и владение свойствами ложь
[[Настраиваемый]] Логическое значение Если false , свойство не может быть удалено, а атрибуты, отличные от [[Value]] и [[Writable]], не могут быть изменены. ложь
Устаревшие атрибуты (начиная с ECMAScript 3, переименованные в ECMAScript 5)
Атрибут Тип Описание
Только чтение Булево значение Обратное состояние атрибута ES5 [[Writable]].
ДонтЭнум Булево значение Обратное состояние атрибута ES5 [[Enumerable]].
Не удалять Булево значение Обратное состояние атрибута ES5 [[Configurable]].
Аксессуар

Связывает ключ с одной или двумя функциями доступа (get и set) для извлечения или сохранения значения и имеет следующие атрибуты:

Атрибуты свойства доступа
Атрибут Тип Описание Значение по умолчанию
[[Получить]] Функциональный объект или неопределенный Функция вызывается с пустым списком аргументов и извлекает значение свойства всякий раз, когда выполняется доступ к значению. См. также получить . не определено
[[Набор]] Функциональный объект или неопределенный Функция вызывается с аргументом, содержащим присвоенное значение, и выполняется при каждой попытке изменить указанное свойство. См. также комплект . не определено
[[Перечислено]] Булево значение Если true , свойство будет перечисляться в циклах for…in. ложь
[[Настраиваемый]] Булево значение Если false , свойство нельзя удалить и изменить на свойство данных. ложь

Примечание. Атрибут обычно используется движком JavaScript, поэтому вы не можете получить к нему прямой доступ (см. подробнее об Object.defineProperty()). Поэтому атрибут заключен в двойные квадратные скобки, а не в одинарные.

«Обычные» объекты и функции

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

Функции — это обычные объекты с дополнительной возможностью вызова.

Финики

При представлении дат лучше всего использовать встроенную утилиту Date в JavaScript.

Индексированные коллекции: Массивы и типизированные массивы

Массивы — это обычные объекты, для которых существует определенная связь между свойствами с целочисленным ключом и свойством «длина». Кроме того, массивы наследуются от Array.prototype , который предоставляет им несколько удобных методов для работы с массивами. Например, indexOf (поиск значения в массиве) или push (добавление элемента в массив) и т. д. Это делает массивы идеальным кандидатом для представления списков или наборов.

Типизированные массивы

— это новшество в JavaScript с ECMAScript Edition 6, которое представляет собой представление базового буфера двоичных данных в виде массива. Следующая таблица поможет вам найти эквивалентные типы данных C:

Объекты TypedArray
Int8Array 1 8-битное целое число со знаком в дополнении до двух байт int8_t
Uint8Array 1 8-битное целое число без знака октет uint8_t
Uint8ClampedArray 1 8-битное целое число без знака (зажато) октет uint8_t
Int16Array 2 16-битное целое число со знаком в дополнении до двух короткий int16_t
Uint16Array 2 16-битное целое число без знака короткий без знака uint16_t
Int32Array 4 32-битное целое число со знаком в дополнении до двух длинный int32_t
Uint32Array 4 32-битное целое число без знака длинное без знака uint32_t
Float32Array 4 32-битное число с плавающей запятой IEEE неограниченный поплавок поплавок
Float64Array 8 64-битное число с плавающей запятой IEEE неограниченный двойной двойной

Наборы ключей: Карты, Наборы, WeakMaps, WeakSets

Эти структуры данных принимают ссылки на объекты в качестве ключей и представлены в ECMAScript Edition 6. Установить и WeakSet представляет набор объектов, а Map и WeakMap связывают значение с объектом. Разница между Maps и WeakMaps заключается в том, что в первом ключи объекта могут быть пронумерованы. Это позволяет оптимизировать сборку мусора в последнем случае.

Карты и наборы можно реализовать на чистом ECMAScript 5. Однако, поскольку объекты нельзя сравнивать (например, в смысле «меньше чем»), производительность поиска обязательно будет линейной. Их собственные реализации (включая WeakMaps) могут иметь производительность поиска, приблизительно логарифмическую относительно постоянного времени.

Обычно для привязки данных к узлу DOM можно задать свойства непосредственно объекта или использовать атрибуты data-* . Недостатком этого является то, что данные доступны любому сценарию, работающему в том же контексте. Карты и WeakMaps упрощают частную привязку данных к объекту.

Структурированные данные: JSON

JSON (обозначение объектов JavaScript) — это упрощенный формат обмена данными, созданный на основе JavaScript, но используемый многими языками программирования. JSON создает универсальные структуры данных. См. JSON и JSON для более подробной информации.

Больше объектов в стандартной библиотеке

JavaScript имеет стандартную библиотеку встроенных объектов. Пожалуйста, взгляните на ссылку, чтобы узнать о других объектах.

Определение типов с помощью оператора

typeof

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

Технические характеристики

Спецификация Статус Комментарий
ECMAScript 1-е издание (ECMA-262) Стандарт Исходное определение.
ECMAScript 5.1 (ECMA-262)
Определение «Типов» в этой спецификации.
Стандарт  
ECMAScript 2015 (6-е издание, ECMA-262)
Определение «Типы данных и значения ECMAScript» в этой спецификации.
Стандарт  
ECMAScript 2017 Draft (ECMA-262)
Определение «Типы данных и значения ECMAScript» в этой спецификации.
Проект  

См. также

  • Николас Закас Коллекция общих структур данных и общих алгоритмов в JavaScript.
  • Деревья поиска реализованы в JavaScript

Лицензия

© Mozilla Contributors, 2016 г.
Лицензия Creative Commons Attribution-ShareAlike License версии 2.5 или более поздней.
https://developer.mozilla.org/en-us/docs/web/javascript/data_structures

Новичок новичок JavaScript Типы

Что такое типы данных JavaScript?

Популярность JavaScript не остановить благодаря его адаптивности. Следуйте этому руководству для начинающих по JavaScript и начните развивать свой опыт работы со стеком JS.

Обзор

Независимо от того, являетесь ли вы разработчиком среднего уровня или опытным, вы получите решения своих проблем во время работы по разработке. containerize.com начал писать обучающие сообщения в блоге в категории программирования, и мы начинаем с руководства для начинающих по JavaScript . Поскольку мы начинаем, эта статья посвящена типам данных JavaScript. Давайте рассмотрим что такое типы данных JavaScript и посмотрим примеры того, как вы можете эффективно использовать их в исходном коде. Поэтому внимательно изучите это руководство для начинающих, чтобы иметь хорошее представление о Типы данных JavaScript .

Мы рассматриваем следующий пункт:

  • Что такое тип данных?
  • Что такое типы данных JavaScript?

Описание типов данных | Что такое тип данных?

Тип данных сообщает компилятору, как интерпретировать или компилировать данные. Использование типов данных имеет решающее значение и должно использоваться с умом. Проще говоря, речь идет о формате данных, таких как число, строка, логическое значение и т. д. Однако существует две категории типов данных: примитивные типы данных и непримитивные типы данных. Существует восемь примитивных типов данных, которые мы рассмотрим в следующем разделе.

Что такое типы данных JavaScript?

На самом деле JavaScript является языком со свободной типизацией, что означает, что вам не нужно явно определять тип переменной. Вы можете присвоить любое значение переменной, и эта переменная будет хранить это значение, например String, BigInt, Boolean или другое.

Примитивные типы данных

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

Например:

 var name = "Меня зовут Мустафа";
name = "Мое имя изменено";
console.log(name) // вывод: мое имя изменено
имя[0] = "М";
console.log(name) // вывод: мое имя изменено
 

В приведенном выше примере String является примитивным типом данных, и старое значение заменяется новым значением, но изменение существующего значения не отражается. Итак, мы видим, что это по-прежнему «мое имя изменено», а не «мое имя изменено»;

Непримитивные типы данных

Непримитивные типы данных изменяемы, проще говоря, противоположны примитивным типам данных.

Например:

 var arr = [1,2,3];
обр[0] = 11;
console.log(arr) // вывод: [11,2,3]
 

Кроме того, примитивные типы данных сравниваются по значению, а непримитивные типы данных всегда сравниваются по ссылке.

Например:

 // Примитивный тип данных
вар имя_имя = "мустафа";
вар last_name = "мустафа";
first_name === last_name // правда
// Непримитивный тип данных
вар обр = [1,2];
вар обр2 = [1,2];
обр === обр2 // ложь
// НО
вар обр = [1,2];
вар обр2 = [1,2];
обр = обр2;
обр === обр2 // правда
 

Теперь давайте рассмотрим типы данных один за другим. Существует 6 примитивных типов данных и 1 непримитивный тип данных.

Примитивные типы данных включают:

  • Строка : Этот тип данных представляет собой текстовые данные, состоящие из последовательности символов, заключенных в кавычки.
  • Число : Представляет десятичные/недесятичные данные, особенно целые или числа с плавающей запятой.
  • Boolean : Представление логических значений true или false.
  • Символ : Символ используется для хранения уникальных значений.
  • Не определено : Переменная без какого-либо значения или неинициализированная переменная.
  • Null : Отсутствие любого значения считается Null.

Непримитивный тип данных включает:

Объект : Он используется для хранения набора данных, состоящих из пар ключ-значение.

Заключение

Это конец этого руководства для начинающих по JavaScript . Мы прошли , что такое типы данных JavaScript ? Кроме того, мы вкратце изучили, что такое тип данных. Вы должны лучше понимать непримитивные и примитивные типы данных в JavaScript.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *