Типы данных javascript: Восемь типов данных, typeof

Содержание

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

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

В javascript для создания переменных служит служебное слово var. Поэтому базовый пример создания переменной выглядит так

var day

Мы создали переменную день и теперь компьютер ее помнит. Мы может позже изменить ее присвоив переменной какой-то значение. То есть ниже мы можем написать

day = 1

Равно — это один из операторов и он служит для присвоения значения в переменную.

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

var basicValue = 12345

В Javascript есть три базовых типа данных. И с одним из них мы уже успели познакомиться. Это Number. То есть число. Когда мы написали

var basicValue = 12345

Этим самым мы присвоили в переменную число.

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

var someText = 'Hello world'

Мы создали переменную someText и записали в нее строку Hello world.

И третий тип данных это Boolean. Этот тип бывает только двух значений true или false.

var gameOver = true

Boolean очень часто используется для все возможных проверок на да/нет. Например закончилась ли игра, залогинен ли юзер и так далее.

При создании переменных есть кое-какие ограничения, которые нужно помнить.

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

var 123Value = true

Этот код просто не будет работать.

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

var isLoggedIn = true

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

var name = 'Alex'

Также нужно помнить, что переменные зависимы от регистра. Это значит что

var isLoggedIn = true
var isloggedin = true

это абсолютно разные переменные.

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

document.write()

и передать в нее вместо строки нашу переменную

document.write(someText)

Как мы видим, у нас вывелась наша переменная на экран.

Если у вас возникли какие-то вопросы или комментарии, пишите их прямо под этим видео.

Типы данных Javascript

Переменные JavaScript могут хранить данные самых разных типов — числа, строки, объекты и другие:


var length = 16;                                // Число
var lastName = "Сидоров";                       // Строка
var  x = {firstName:"Иван", lastName:"Иванов"}; // Объект

Концепция типов данных

В программировании типизация данных является очень важной концепцией.

Чтобы можно было оперировать переменными, крайне важно знать об их типах.

Без типов данных компьютер не будет знать как безопасно вычислить, например, такое выражение:


var x = 16 + "Volvo"; 

Имеет ли смысл добавлять к строке «Volvo» число 16? Это приведет к ошибке или какому-либо разумному результату?

JavaScript будет интерпретировать приведенный выше пример следующим образом:


var x = "16" + "Volvo"; 

Внимание! При сложении числа и строки JavaScript будет воспринимать число как строку.

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


JavaScript:
 var x = 16 + 4 + "Volvo"; 

Результат:
 20Volvo 

JavaScript:
 var x = "Volvo" + 16 + 4; 

Результат:
 Volvo164 

В первом примере JavaScript воспринимает 16 и 4 как числа, пока не достигнет строки «Volvo».

Во втором примере, так как первый операнд — строка, все последующие операнды также считаются строками.

JavaScript типы являются динамическими

В JavaScript все типы данных являются динамическими. Это означает, что одна и та же переменная может использоваться для хранения данных разных типов:


 var x;       // x имеет тип undefined
 x = 5;       // теперь x - число
 x = "John";  // теперь x - строка 

Строки в JavaScript

Строка (или текстовая строка) это последовательность символов, например, «Иван Петров».

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


var carName = "Volvo XC60";   // Используются двойные кавычки
var carName = 'Volvo XC60';   // Используются одинарные кавычки

Внутри строки можно использовать кавычки только в том случае, если они отличаются от кавычек, в которые заключена строка:


var answer = "It's alright";             // Одинарные кавычки внутри двойных
var answer = "He is called 'Johnny'";    // Одинарные кавычки внутри двойных
var answer = 'He is called "Johnny"';    // Двойные кавычки внутри одинарных

Подробнее о строках будет рассказано дальше в этом учебнике.

Числа в JavaScript

В JavaScript существует только один тип числовых данных.

Числа могут записываться как с десятичной точкой, так и без нее:

var x1 = 34.00; // С десятичной точкой var x2 = 34; // Без десятичной точки

Очень большие и очень малые числа могут записываться при помощи научной (экспоненциальной) нотации (имеет вид Mep, где M – число, e — означает «умножить на 10 в степени…», p – порядок или степень, в которую возводится 10):


var y = 123e5;      // 12300000
var z = 123e-5;     // 0.00123 

Подробнее о числах будет рассказано дальше в этом учебнике.

Логические данные в JavaScript

Есть два логических значения: true (истина) и false (ложь).


var x = 5;
var y = 5;
var z = 6;
(x == y)       // Вернет true
(x == z)       // Вернет false 

Логические значения часто используются в проверках различных условий.

Подробнее об этом будет рассказано дальше в этом учебнике.

Массивы в JavaScript

Массивы в JavaScript записываются при помощи квадратных скобок.

Элементы массива разделяются запятыми.

В следующем примере декларируется (создается) массив с именем cars, содержащий три элемента:


var cars = ["Saab", "Volvo", "BMW"]; 

Индексация элементов массива начинается с нуля. Это означает, что первый элемент имеет индекс [0], второй [1] и так далее.

Подробнее о массивах будет рассказано дальше в этом учебнике.

Объекты в JavaScript

Объекты в JavaScript записываются при помощи фигурных скобок.

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


var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

В приведенном выше примере объект с именем person имеет 4 свойства: firstName, lastName, age, eyeColor.

Подробнее об объектах будет рассказано дальше в этом учебнике.

Оператор typeof

Чтобы определить тип данных переменной в JavaScript используется оператор typeof.

Оператор typeof возвращает тип данных переменной или выражения:


typeof ""            // Вернет "string"
typeof "John"        // Вернет "string"
typeof "John Doe"    // Вернет "string" 
typeof 0             // Вернет "number"
typeof 314           // Вернет "number"
typeof 3.14          // Вернет "number"
typeof (3)           // Вернет "number"
typeof (3 + 4)       // Вернет "number" 

Тип undefined

В JavaScript переменные без значения на самом деле имеют значение undefined. И оператор typeof также покажет тип undefined.


var car;   // Значение undefined, тип undefined

Любую переменную можно «сбросить», присвоив ей значение undefined. Ее тип также станет undefined.


car = undefined;   // Значение undefined, тип undefined

Пустые значения

Пустое значение не имеет ничего общего со значением undefined.

У пустой строки есть корректные значение и тип.


var car = "";   // Значение "", тип typeof "string" 

Null

В JavaScript значение null означает «ничего». Это что-то чего не существует.

При этом в JavaScript тип null является объектом.

Внимание! Случайно можно посчитать ошибкой, что проверка типов typeof null возвращает тип объект. Ведь он, очевидно, должен быть null. Но в JavaScript null — объект.

Вы можете обнулить объект присвоив ему значение null:


var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null;        // Теперь здесь значение null, но тип по прежнему object

Также, обнулить объект можно при помощи значения undefined:


var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined;   // Теперь здесь значение и тип undefined

Разница между undefined и null

Undefined и null равны по значению, но различны по типу:


typeof undefined      // undefined
typeof null           // object

null === undefined    // false
null == undefined     // true 

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

Примитивными данными являются одиночные простые значения без дополнительных свойств и методов.

В этом случае оператор typeof возвращает один из следующих примитивных типов:

  • string
  • number
  • boolean
  • undefined

typeof "John"              // Вернет "string" 
typeof 3.14                // Вернет "number"
typeof true                // Вернет "boolean"
typeof false               // Вернет "boolean"
typeof x                   // Вернет "undefined" (если у переменной x нет значения)

Сложные (комплексные) данные

В JavaScript существует два сложных или комплексных типа данных:

Оператор typeof возвращает тип «object» для объектов, массивов и значения null.

Для функций оператор typeof возвращает тип не «object», а «function».


typeof {name:'John', age:34} // Вернет "object"
typeof [1,2,3,4]             // Вернет "object" (не "array", см. ниже)
typeof null                  // Вернет "object"
typeof function myFunc(){}   // Вернет "function"

Внимание! Для массивов оператор typeof возвращает тип «object», потому что в JavaScript массивы являются объектами.

Функции Javascript Вверх Присваивание в Javascript

JavaScript Типы данных. Уроки для начинающих. W3Schools на русском


JavaScript Типы данных

Переменные JavaScript могут содержать множество типов данных: числа, строки, объекты и многое другое:

var length = 16;                               // Число
var lastName = «Johnson»;                      // Строка
var x = {firstName:»John», lastName:»Doe»};    // Объект


Концепция типов данных

В программировании типы данных являются важной концепцией.

Чтобы иметь возможность работать с переменными, важно знать о типе данных.

Без типов данных компьютер не может безопасно решить эту проблему:

Есть ли смысл добавлять «Volvo» к шестнадцати? Это приведёт к ошибке или покажет результат?

JavaScript будет обрабатывать приведенный выше пример как:

При добавлении числа и строки JavaScript будет обрабатывать число как строку.

JavaScript определяет выражения слева направо. Разные последовательности могут давать разные результаты:

В первом примере JavaScript обрабатывает 16 и 4 как числа, пока не достигнет «Volvo».

Во втором примере, поскольку первый операнд является строкой, все операнды обрабатываются как строки.


JavaScript Типы являются динамическими

JavaScript имеет динамические типы. Это означает, что одна и та же переменная может использоваться для хранения разных типов данных (т.е. меняться при разных условиях):

Пример

var x;           // Здесь x не определён
x = 5;           // Здесь x является числом
x = «John»;      // Здесь x является строкой

Попробуйте сами »

JavaScript Строки

Строка (или текстовая строка) представляет собой последовательность символов, например «John Doe».

Строки пишутся в кавычках. Вы можете использовать одинарные или двойные кавычки:

Пример

var carName1 = «Volvo XC60»;   // Использование двойных кавычек
var carName2 = ‘Volvo XC60’;   // Использование одинарных кавычек

Попробуйте сами »

Вы можете использовать кавычки внутри строки, если они не соответствуют кавычкам, окружающим строку:

Пример

var answer1 = «Все нормально»;             // Одинарная кавычка внутри двойных кавычек
var answer2 = ‘Его зовут ‘Johnny»;    // Одинарные кавычки внутри двойных кавычек
var answer3 = ‘Его зовут ‘Johnny»;    // Двойные кавычки внутри одинарных кавычек

Попробуйте сами »

Вы узнаете больше о строках позже в этом учебнике.


JavaScript Числа

JavaScript имеет только один тип чисел.

Числа могут быть написаны из или без десятичных знаков:

Пример

var x1 = 34.00;     // Написано с десятичными знаками
var x2 = 34;        // Написано без десятичных знаков

Попробуйте сами »

Очень большие или очень маленькие числа могут быть написаны с научной (экспоненциальной) нотацией:

Вы узнаете больше о числах позже в этом учебнике.


JavaScript Булевы (логические) значения

Булевых может быть только два значения: true или false (истина или ложь).

Пример

var x = 5;
var y = 5;
var z = 6;
(x == y)       // Возвращает true
(x == z)       // Возвращает false

Попробуйте сами »

Булевы значения часто используются в условном тестировании.

Вы узнаете больше об условном тестировании позже в этом учебнике.


JavaScript Массивы (arrays)

JavaScript массивы пишутся в квадратных скобках.

Элементы массива разделяются запятыми.

Следующий код объявляет (создает) массив с именем cars, содержащий три элемента (названия машин):

Индексы массива начинаются с нуля, что означает, что первый элемент равен [0], второй [1] и т.д.

Подробнее о массивах вы узнаете далее в этом учебнике.


JavaScript Объекты

JavaScript объекты пишутся с помощью фигурных скобок {}.

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

Объект (персона) в примере выше имеет 4 свойства: firstName, lastName, age и eyeColor.

Вы узнаете больше об объектах позже в этом учебнике.



Оператор typeof

Вы можете использовать оператор JavaScript typeof чтобы найти тип JavaScript переменной.

Оператор typeof возвращает тип переменной или выражения:

Пример

typeof «»             // Возвращает «string»
typeof «John»         // Возвращает «string»
typeof «John Doe»     // Возвращает «string»

Попробуйте сами »

Пример

typeof 0              // Возвращает «number»
typeof 314            // Возвращает «number»
typeof 3.14           // Возвращает «number»
typeof (3)            // Возвращает «number»
typeof (3 + 4)        // Возвращает «number»

Попробуйте сами »

Undefined / неопределённое значение

В JavaScript переменная без значения имеет значение undefined. Тип также undefined.

Любую переменную можно очистить, установив значение в undefined. Тип также будет undefined.


Пустые значения

Пустое значение не имеет ничего общего с undefined.

Пустая строка имеет допустимое значение и тип.


Null / Ноль

В JavaScript null — это «ничто». Предполагается, что это нечто, чего не существует.

К сожалению, в JavaScript, тип данных null является объектом.

Можно считать ошибкой в JavaScript, когда typeof null является объектом. Он должен быть null.

Объект можно очистить, установив его в null:

Пример

var person = {firstName:»John», lastName:»Doe», age:50, eyeColor:»blue»};
person = null;    // Теперь значение равно null, но тип по-прежнему является object

Попробуйте сами »

Также можно очистить объект, установив его undefined:

Пример

var person = {firstName:»John», lastName:»Doe», age:50, eyeColor:»blue»};
person = undefined;   // Теперь и значение, и тип не определены

Попробуйте сами »

Различия между Undefined и Null

undefined и null равноценны, но различаются по типу:

typeof undefined           // undefined
typeof null                // object

null === undefined         // false
null == undefined          // true

Попробуйте сами »

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

Примитивное значение данных — это одно простое значение данных без дополнительных свойств и методов.

Оператор typeof может вернуть один из этих примитивных типов:

  • string
  • number
  • boolean
  • undefined

Пример

typeof «John»              // Возвращает «string»
typeof 3.14                // Возвращает «number»
typeof true                // Возвращает «boolean»
typeof false               // Возвращает «boolean»
typeof x                   // Возвращает «undefined» (если х не имеет значения)

Попробуйте сами »

Комплексные данные

Оператор typeof может вернуть один из двух сложных типов:

Оператор typeof возвращает «object» для объектов, массивов и null.

Оператор typeof не возвращает «object» для функций.

Пример

typeof {name:’John’, age:34} // Возвращает «object»
typeof [1,2,3,4]             // Возвращает «object» (не «массив», смотрите примечание выше)
typeof null                  // Возвращает «object»
typeof function myFunc(){}   // Возвращает «function»

Попробуйте сами »

Оператор typeof возвращает «object» для массивов, потому что в JavaScript массивы являются объектами.



Составные типы данных в языке JavaScript

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

Объект — понятие, обладающее настолько большой общностью, что противопоставляется исторически более раннему понятию «тип данных». Действительно, объект есть контейнер, содержащий переменные и функции, или только одну из этих категорий: он может содержать только переменные или только определения функций. В свою очередь, переменные внутри объекта могут содержать данные как примитивных, так и составных типов (в том числе и данные типа объект). Последнее обстоятельство как раз и позволяет конструировать сколь угодно сложные типы данных. Если исходить из более традиционного понятия «тип данных», то объект — это сложный (составной) тип данных. С другой стороны, поддержка как примитивных, так и сложно устроенных данных может быть обеспечена соответствующими объектами.

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

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

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

Аналогично, все, что связано с понятием функции, можно реализовать и представить в виде некоторого объекта. В JavaScript каждая функция реализуется посредством объекта Function. Такое представление обладает многими достоинствами, которые оказываются востребованными при составлении более или менее сложных программ. Однако любой программист может ограничиться традиционным пониманием функции как блока программного кода, который можно вызвать для исполнения по имени этой функции. В этом смысле функцию можно отнести к особому типу данных. Интерпретаторы, прежде чем начать выполнение кода, анализируют его в целом на присутствие в нем определений функций, так как код функций необходимо «усвоить» прежде, чем он будет вызван где-то и когда-то (до или после определения). В отличие от функций, другие операторы выполняются интерпретатором друг за другом в порядке их упоминания в исходном коде

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

В JavaScript имеется множество встроенных объектов, обеспечивающих работу с числами, строками, массивами, датами, функциями и т. п. Некоторые из этих объектов соответствуют, как говорят, типам данных. Например, для работы с массивами имеется объект Array, для манипулирования датами и временем — Date, а для выполнения более или менее сложных математических вычислений — Math. Перечень встроенных объектов приводится ниже:

  • Array. Обеспечивает массив данных.
  • Boolean. Объект, соответствующий логическому типу данных Boolean.
  • Date. Обеспечивает работу с датами и временем.
  • Error. Обеспечивает хранение информации об ошибках и возможность создания исключительных ситуаций.
  • Function. Обеспечивает возможности, связанные с функциями, например, проверку количества переданных параметров.
  • Global. Обеспечивает встроенные функции для преобразования и сравнения данных.
  • Math. Обеспечивает множество математических функций и kohcтант. Применяется для выполнения более сложных вычислений, чем те, которые обеспечиваются арифметическими операторами.
  • Number. Объект, соответствующий числовому типу данных.
  • Object. Базовый объект, из которого получаются все остальные объекты, в том числе и пользовательские.
  • RegExp. Обеспечивает сложные способы обработки строк на основе так называемых регулярных выражений.
  • String. Объект, соответствующий строковому типу данных.

Учимся кодить на JavaScript. Типы данных. На реальных примерах.

Доброго времени суток, друзья. На сколько хорошо вы знаете JavaScript? Может вы опытный разработчик? Или только начинаете свою карьеру? В любом случае, без хорошего знания теоретических основ языка нельзя стать профессионалом, писать высококачественный и надежный код. В данной серии статей я хочу разобрать самые базовые основы языка и сегодня мы рассмотрим на примерах типы данных, которые имеются в JavaScript.

Видео на эту тему.

О типах в JS

В JavaScript одной переменной можно присвоить значение разных типов.

Пример:


let text = 999;
text = "data";

Дело в том, что данный язык является «динамически типизированным» (или еще называют «слабо типизированным» ) языком программирования. Т.е. переменные не привязаны к типу данных и могут быть изменены в ходе выполнения программы.  Таким образом происходит автоматическое определение типов.

На текущий момент (2020 год) существует 8 основных типов данных. Они делятся на две категории: (1) примитивные и (2) объекты. «Примитивными» называют типы, значения которых могут быть только простыми. К ним относятся:

—   number (Числа)bigInt (Большие числа)

— string (Строки)

— boolean (Булевый тип)

— undefined (Неопределенный тип)

— null

— Symbol

«Объекты» предназначены для хранения коллекций, а также для создания новых структур данных. Давайте подробно разберем каждый из этих типов.

Number

Числовой тип в JavaScript могут иметь как целочисленные так и дробные значения. Этот тип хранится в 64-битном формате IEEE-754.

Пример:


let a = 10
let b = 1.2

Для работы с числами возможно использовать стандартные математические операции, например, сложение (+), вычитание (-), деление (/), умножение (*).

Пример:


let a = 10 + 2
let b = 20 - a

Число можно записывать в двоичном, восьмеричном и шестнадцатеричном формате.

Пример:


0b100101100 // 300 в двоичной 
0o454 // 300 в восьмеричной
0x12c // 300 в шестнадцатеричной

JavaScript имеет несколько функций для округления чисел. Посмотрим на каждую из них:

Math.round — округляет до ближайшего целого

Math.ceil — округляет в большую сторону

Math.floor — округляет  в меньшую сторону

Чтобы получить самое большое или самое маленькое значение типа number можно воспользоваться объектом Number и вызвать у него свойства MAX_VALUE и MIN_VALUE.

Пример:


Number.MAX_VALUE
// 1.7976931348623157e+308
Number.MIN_VALUE
// 5e-324

Часто на собеседованиях задают такой вопрос: 0.1 + 0.2 == 0.3 

Будет ли данное сравнение истинным? Нет


0.1 + 0.2 == 0.3 // false

Если сложить 0.1 и 0.2, мы получим погрешность: 0.1 + 0.2 = 0.30000000000000004

Дело в том, что во время вычислений происходит потеря точности в момент деления чисел при получении значений 0.1 и 0.3. Данной проблемой в погрешности при вычислении чисел с плавающей запятой страдают все языки, поддерживающие формат IEEE-754 (Java, C,  Ruby, Perl, PHP).

BigInt

Большие числа в JavaScript появились совсем недавно. Обычный тип number не может использовать число большее, чем 2 в 53 (-2 в 53). Этот тип используется для работы со значениями, превышающими длину 16 цифр. Пример использования bigInt вы сможете найти в этой статье.

String

Строковой тип предназначен для работы с текстовыми данными.  Для его обозначения используются кавычки. В JavaScript имеется несколько типов кавычек:

» » — двойные

‘ ‘ — одинарные

` ` — обратные.

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

Пример:


let hi = `Hello ${name}!`

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

Пример:


let str = "Text"

Строка состоит из ряда элементов, которые имеют свои индексы. Первым индексом является 0. 

Пример:


let str = "Text"
str[0] // T

Используя метод length можно получить длину строки, которая будет равна количеству элементов строки.

Пример:


str.length // 4

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

Пример:


let str = "Text!"
str[str.length - 1] // !

Имеется возможность переносить текст на новую строку, для чего достаточно добавить спецсимвол \n в месте, где нужно произвести перенос.

Пример:


let text = "Hello \n Mary"
// Hello 
// Mary

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

Строка является иммутабельным типом. Если попытаться изменить одну букву, то исходная строка не поменяется.

Пример:


let text = "Text"
text[0] = "A" // error

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

Пример:


let text = "Text"
text = "Text2"

Изменение регистров в строках. Для этого в JavaScript имеется два метода. Для перевода в верхний регистр toUpperCase и toLowerCase для перевода в нижний, соответственно.

Пример:


"Text".toUpperCase() // TEXT
"Text".toLowerCase() // text

На этом мы закончим. Данный тип имеет большое количество методов, которые будет рассмотрены в отдельной статье. Перейдем к другим нашим типам.

Boolean

Булевый ( Логический ) тип. Данный тип появился благодаря Булевой алгебре. Он имеет всего два значения:

true — истина, да

false — ложь, нет

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

Пример:


1 > 10 // false
let isPosition = true

undefined

Это специальное значение, обозначающее не присвоенное значение переменной.

Пример:


let a
console.log(a) // undefined

Можно присвоить значение переменной undefined, но не следует этого делать, т.к. JavaScript сделает это за нас.

null

Это специальный тип имеющий только одно значение и записывается литералом null. Данное значение обозначает отсутствие какого-либо значения, «значение неизвестно».

Можно явно указать, что значение переменной неизвестно.

Пример:


let foo = null

Symbol

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

Пример:


let uid = Symbol("uid")

При сравнении символов не происходит сравнение их описаний. Они всегда будут полностью уникальны.  Данный параметр больше нужен при дебаге кода.

Пример:


let uid = Symbol("uid")
let uid2 = Symbol("uid")
uid == uid2 // false

Object

Объект не относится к «примитивным» типам данных и предназначен для хранения более сложных коллекций и сущностей. JavaScript имеет два способа создания нового объекта: 

(1) Через конструктор

Пример:


let obj = new Object({ name: "Test" })

(2) Через литерал с использование фигурных скобок {}

Пример:


let obj = {
	name: "Test"
}

Объекты имеют свойства, которые обозначаются терминологией «ключ» и «значение».

В примере выше мы создали новый объект, содержащий свойства с ключом «name» и значением «Test».

Для получения значения свойства объекта нужно обратится к нему «через точку».

Пример:


console.log(obj.name) // "Test"

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

Пример:


let obj = {
	name: "Test"
}
obj.name = "Test2"
obj.year = 2020
// { name: "Test2", year: 2020 }

Для удаления свойства в объекте нужно использовать оператор delete.

Пример:


delete obj.name

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

typeof

Оператор typeof предназначен для определения типа значения переменной и при вызове возвращает результат в виде строки. 

Пример:


typeof 10 // "number"
typeof 10n // "bigint"
typeof 10.20 // "number"
typeof "Text" // "string"
typeof Symbol("uid") // "symbol"
typeof true // "boolean"
typeof undefined // "undefined"
typeof null // "object"
typeof {} // "object"
typeof []  // "object"
typeof function(){} // "function"

Наверное вы уже заметили, что из все типов typeof определяет null как object. На самом деле null имеет свой собственный тип. Это официально признанная ошибка typeof, оставленная в JavaScript для обратной совместимости.

Также typeof function(){} возвращает  «function». Такой тип отсутсвует в JavaScaript и «function» является объектным типом. Данная запись тоже не верна, но как показывает практика, она бывает очень удобна при написании кода (в случаях создания сложных проверок).

Сегодня мы рассмотрели все типы данных в JavaScript и на примерах разобрали их отличия и особенности. Надеюсь, что данный материал был вам полезен. Учитесь, думайте, пишите код. Удачного кодинга, друзья!

Полезные материалы:

https://learn.javascript.ru/types

https://developer.mozilla.org/ru/docs/Web/JavaScript/Data_structures

Подписывайтесь на наш канал в Telegram и на YouTube для получения самой последней и актуальной информации. 

Типы данных JavaScript | bookhtml.ru

Любая программа при своей работе оперирует некими типами данных: именем стилевого класса, размерами элемента Web-страницы, цветом шрифта, величиной атмосферного давления и пр. Конечно, не составляют исключения и Web-сценарии — уже первый созданный нами Web-сценарий обрабатывал какие-то данные.

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

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

Примеры строк:

«JavaScript»

«1234567»

‘Строковые данные — это последовательности символов.’

Строки могут иметь любую длину (определяемую количеством составляющих их символов), ограниченную лишь объемом свободной памяти компьютера. Теоретически существует предел в 2 Гбайт, но вряд ли в нашей практике встретятся столь длинные строки.

Кроме букв, цифр и знаков препинания, строки могут содержать специальные символы, служащие для особых целей (табл. 14.1).

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

«\»Этот фрагмент текста\» помещен в кавычки»

Числовые данные (или числа) — это обычные числа, над которыми можно производить арифметические действия, извлекать из них квадратный корень и вычислять тригонометрические функции. Числа могут быть как целыми, так и дробными; в последнем случае целая и дробная части разделяются точкой (не запятой!).

Примеры чисел:

13756

454.7873

0.5635

Дробные числа могут быть записаны в экспоненциальной форме:

<мантисса>E<порядок>.

Вот примеры чисел, заданных таким образом (в скобках дано традиционное математическое представление):

1E-5 (10–5)

8.546E23 (8,546 1023)

Также имеется возможность записи целых чисел в восьмеричном и шестнадцатеричном виде. Восьмеричные числа записываются с нулем в начале (например, 047 или -012543624), а шестнадцатеричные — с символами 0x, также помещенными в начало (например, 0x35F). Отметим, что в JavaScript так можно записывать только целые числа.

Логическая величина может принимать только два значения: true и false — «истина» и «ложь», — обозначаемые соответственно ключевыми словами true и false. (Ключевое слово — это слово, имеющее в языке программирования особое значение.) Логические величины используются, как правило, в условных выражениях (о них речь пойдет позже).

JavaScript также поддерживает три специальных типа данных. Тип null может принимать единственное значение null и применяется в особых случаях. Тип NaN также может принимать единственное значение NaN и обозначает числовое значение, не являющееся числом (например, математическую бесконечность). Тип undefined указывает на то, что переменной не было присвоено никакое значение, и, опять же, принимает единственное значение undefined.

ВНИМАНИЕ!

undefined — это не то же самое, что null!

Еще два типа данных, поддерживаемые JavaScript и не описанные здесь, мы рассмотрим позже.

JS JavaScript Типы данных



Типы данных JavaScript

Переменные JavaScript могут содержать множество типов данных: числа, строки, объекты и многое другое:

var length = 16;                               // Number
var lastName = «Johnson»;                      // String
var x = {firstName:»John», lastName:»Doe»};    // Object


Понятие типов данных

В программировании типы данных являются важной концепцией.

Чтобы иметь возможность работать с переменными, важно знать что-то о типе.

Без типов данных компьютер не может безопасно решить эту проблему:

Есть ли смысл добавить «Вольво» в шестнадцать? Приведет ли это к ошибке или приведет к получению результата?

JavaScript будет рассматривать приведенный выше пример как:

При добавлении числа и строки JavaScript будет обрабатывать число в виде строки.

Пример

var x = 16 + «Volvo»;

Пример

var x = «Volvo» + 16;

JavaScript вычисляет выражения слева направо. Различные последовательности могут дать различные результаты:

JavaScript:

var x = 16 + 4 + «Volvo»;

Результат:

20Volvo

JavaScript:

var x = «Volvo» + 16 + 4;

Результат:

Volvo164

В первом примере JavaScript обрабатывает 16 и 4 как числа, пока не достигнет «Volvo».

Во втором примере, поскольку первый операнд является строкой, все операнды обрабатываются как строки.



Типы JavaScript являются динамическими.

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

Пример

var x;           // Now x is undefined
x = 5;           // Now x is a Number
x = «John»;      // Now x is a String


Строки JavaScript

Строка (или текстовая строка) представляет собой серию символов типа «John Doe».

Строки записываются в кавычки. Можно использовать одинарные или двойные кавычки:

Пример

var carName = «Volvo XC60»;   // Using double quotes
var carName = ‘Volvo XC60’;   // Using single quotes

Кавычки можно использовать внутри строки, если они не совпадают с кавычками, окружающими строку:

Пример

var answer = «It’s alright»;             // Single quote inside double quotes
var answer = «He is called ‘Johnny'»;    // Single quotes inside double quotes
var answer = ‘He is called «Johnny»‘;    // Double quotes inside single quotes

Вы узнаете больше о строках далее в этом учебнике.


Номера JavaScript

JavaScript имеет только один тип чисел.

Номера могут быть написаны с или без десятичных знаков:

Пример

var x1 = 34.00;     // Written with decimals
var x2 = 34;        // Written without decimals

Очень большие или дополнительные малые числа могут быть написаны с научной (экспоненциальной) нотацией:

Пример

var y = 123e5;      // 12300000
var z = 123e-5;     // 0.00123

Вы узнаете больше о цифрах далее в этом учебнике.


Булевы JavaScript

Логическое значение может иметь только два значения: true или false.

Пример

var x = 5;
var y = 5;
var z = 6;
(x == y)       // Returns true
(x == z)       // Returns false

Логические значения часто используются в условном тестировании.

Подробнее об условном тестировании вы узнаете далее в этом учебнике.


Массивы JavaScript

Массивы JavaScript записываются в квадратных скобках.

Элементы массива разделяются запятыми.

Следующий код объявляет (создает) массив под названием Cars, содержащий три элемента (названия автомобилей):

Пример

var cars = [«Saab», «Volvo», «BMW»];

Индексы массива имеют нулевую основу, что означает, что первый элемент равен [0], второй — [1] и т. д.

Вы узнаете больше о массивах далее в этом учебнике.


Объекты JavaScript

Объекты JavaScript записываются фигурными скобками.

Свойства объекта записываются в виде пар «имя: значение», разделенных запятыми.

Пример

var person = {firstName:»John», lastName:»Doe», age:50, eyeColor:»blue»};

Объект (Person) в приведенном выше примере имеет 4 свойства: имя, фамилия, возраст и эйеколор.

Вы узнаете больше об объектах далее в этом учебнике.


Оператор typeof

Для поиска типа переменной JavaScript можно использовать оператор JavaScript typeof.

Оператор typeof Возвращает тип переменной или выражения:

Пример

typeof «»                  // Returns «string»
typeof «John»              // Returns «string»
typeof «John Doe»          // Returns «string»

Пример

typeof 0                   // Returns «number»
typeof 314                 // Returns «number»
typeof 3.14                // Returns «number»
typeof (3)                 // Returns «number»
typeof (3 + 4)             // Returns «number»


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

В JavaScript переменная без значения имеет значение undefined. Typeof также не определен.

Пример

var car;                // Value is undefined, type is undefined

Любую переменную можно очистить, задав значение undefined. Тип также будет неопределенным .

Пример

car = undefined;        // Value is undefined, type is undefined


Пустые значения

Пустое значение не имеет ничего общего с undefined.

Пустая строка имеет как юридическое значение, так и тип.

Пример

var car = «»;              // The value is «», the typeof is «string»


Null

В JavaScript null является «Nothing». Это должно быть что-то, чего не существует.

К сожалению, в JavaScript тип данных null является объектом.

Вы можете считать это ошибкой в JavaScript, typeof null является объектом. Он должен иметь значение null.

Можно очистить объект, задав ему значение NULL:

Пример

var person = {firstName:»John», lastName:»Doe», age:50, eyeColor:»blue»};
person = null;        // Now value is null, but type is still an object

Можно также очистить объект, задав для него значение undefined:

Пример

var person = {firstName:»John», lastName:»Doe», age:50, eyeColor:»blue»};
person = undefined;   // Now both value and type is undefined


Разница между неопределенным и нулевым

Undefined и NULL равны в значении, но различаются по типу:

typeof undefined           // undefined
typeof null                // object

null === undefined         // false
null == undefined          // true


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

Примитивное значение данных — это одно простое значение данных без дополнительных свойств и методов.

Оператор typeof может возвращать один из следующих примитивных типов:

  • string
  • number
  • boolean
  • undefined

Пример

typeof «John»              // Returns «string»
typeof 3.14                // Returns «number»
typeof true                // Returns «boolean»
typeof false               // Returns «boolean»
typeof x                   // Returns «undefined» (if x has no value)


Сложные данные

Оператор typeof может возвращать один из двух сложных типов:

Оператор typeof возвращает объект для обоих объектов, массивов и NULL.

Оператор typeof не возвращает объект для функций.

Пример

typeof {name:’John’, age:34} // Returns «object»
typeof [1,2,3,4]             // Returns «object» (not «array», see note below)
typeof null                  // Returns «object»
typeof function myFunc(){}   // Returns «function»

Оператор typeof возвращает «Object» для массивов, так как в JavaScript массивы являются объектами.


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

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

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

  пусть foo = 42;
foo = 'бар';
foo = true;
  

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

  • Шесть типов данных , которые являются примитивами, проверяются оператором typeof :
    • undefined : typeof instance === "undefined"
    • Boolean: typeof instance === "boolean"
    • Number: typeof instance === "number"
    • Строка: typeof instance === "строка"
    • BigInt: typeof instance === "bigint"
    • Symbol: typeof instance === "symbol"
  • Типы конструкций :
    • Объект: typeof instance === "объект" .Специальные не-данные, но Структурный тип для любого созданного экземпляра объекта, также используемый в качестве структур данных: новый Объект , новый Массив , новый Карта , новый Установить , новый WeakMap , новый WeakSet , новый Дата и почти все, что сделано с новым ключевым словом ;
    • Функция: не структура данных, хотя она также отвечает за typeof operator: typeof instance === "function" .Это просто специальное сокращение для функций, хотя каждый конструктор функций является производным от конструктора Object .
  • Структурный корень Примитив:
    • null : typeof instance === "объект" . Специальный примитивный тип, имеющий дополнительное использование для своего значения: если объект не унаследован, отображается null ;

Имейте в виду, что единственная ценная цель использования оператора типа или — это проверка типа данных.Если мы хотим проверить какой-либо структурный тип, производный от Object , бессмысленно использовать для этого type of , так как мы всегда будем получать «объект» . Правильный способ проверить, какой тип объекта мы используем, — это ключевое слово instanceof . Но даже в этом случае могут быть заблуждения.

Как мы видим, значение каждого примитивного типа очевидно, за исключением undefined и null , которые почти одинаковы. Это происходит потому, что понятие Времени жестко связано с назначением алгоритмов.Мы можем указать на то, чего еще не существует или больше не существует: undefined . Но когда мы хотим иметь возможность представить что-то существующее как пустое, мы должны изобрести другое ключевое слово. И это то, что означает null : начало структурного смысла.

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

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

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

Тип Null

Тип Null имеет ровно одно значение: null . См. null и Null для получения более подробной информации.

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

Переменная, которой не было присвоено значение, имеет значение undefined . См. undefined и Undefined для более подробной информации.53 — 1). В дополнение к представлению чисел с плавающей запятой тип числа имеет три символических значения: + Infinity , -Infinity и NaN N или N »).

Чтобы проверить наибольшее доступное значение или наименьшее доступное значение в пределах ± Infinity , вы можете использовать константы Number.MAX_VALUE или Number.MIN_VALUE .

Примечание: Начиная с ECMAScript 2015, вы также можете проверить, находится ли число в диапазоне чисел с плавающей запятой двойной точности, используя Number.isSafeInteger () , а также Number.MAX_SAFE_INTEGER и Number.MIN_SAFE_INTEGER .

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

Числовой тип имеет только одно целое число с двумя представлениями: 0 представляется как -0 и +0 . ( 0 — это псевдоним для +0 .)

На практике это почти не влияет.Например, +0 === -0 — это истинный . Однако вы можете заметить это, если разделите на ноль:

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

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

Примечание: Хотя побитовые операторы могут использоваться для представления нескольких логических значений в одном числе с использованием битовой маскировки, это обычно считается плохой практикой.JavaScript предлагает другие средства для представления набора логических значений (например, массива логических значений или объекта с логическими значениями, присвоенными именованным свойствам). Битовая маскировка также затрудняет чтение, понимание и сопровождение кода.

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

Тип BigInt

Тип BigInt — это числовой примитив в JavaScript, который может представлять целые числа с произвольной точностью. С BigInts вы можете безопасно хранить и обрабатывать большие целые числа даже сверх безопасного целочисленного предела для Numbers.

BigInt создается добавлением n в конец целого числа или вызовом конструктора.

Вы можете получить наиболее безопасное значение, которое может быть увеличено с помощью чисел, используя константу Number.MAX_SAFE_INTEGER .С введением BigInts вы можете работать с числами, превышающими Number.MAX_SAFE_INTEGER .

Этот пример демонстрирует, где увеличение числа .MAX_SAFE_INTEGER возвращает ожидаемый результат:

 > const x = 2n ** 53n;
940992n
> const y = x + 1n;
940993n
  

Вы можете использовать операторы + , * , - , ** и % с BigInts — точно так же, как с Numbers.BigInt не является строго числом, но это примерно так.

BigInt ведет себя как Number в случаях, когда он преобразован в логическое значение: if , || , && , Логическое значение , ! .

BigInt s не могут использоваться как взаимозаменяемые с Numbers. Вместо этого будет выдано TypeError .

Тип строки

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

В отличие от некоторых языков программирования (например, C), строки JavaScript неизменяемы. Это означает, что после создания строки ее невозможно изменить.

Тем не менее, все еще возможно создать другую строку на основе операции с исходной строкой. Например:

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

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

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

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

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

Тип символа

Символ — это уникальное значение и неизменяемое значение примитива , которое может использоваться в качестве ключа свойства объекта (см. Ниже). В некоторых языках программирования символы называются «атомами».

Дополнительные сведения см. В разделе «Символ» и объектная оболочка «Символ » в JavaScript.

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

Свойства

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

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

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

См. Объект .defineProperty () , чтобы узнать больше.

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

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

Атрибуты свойства данных
Атрибут Тип Описание Значение по умолчанию
[[Значение]] Любой тип JavaScript Значение, полученное при доступе к свойству. неопределенный
[[Доступно для записи]] логический Если false , свойство [[Value]] не может быть изменено. ложный
[[Enumerable]] логический

Если истинно , свойство будет перечислено в для … в петли.
См. Также Перечислимость и владение недвижимостью.

ложный
[[Настраиваемый]] логический Если false , свойство не может быть удалено, не может быть изменено к свойству доступа, а также к атрибутам, отличным от [[Value]] и [[Writable]] нельзя изменить. ложный
Атрибут Тип Описание
Только чтение логический Обратное состояние атрибута ES5 [[Writable]].
DontEnum логический Обратное состояние атрибута ES5 [[Enumerable]].
Не удалять логический Обратное состояние атрибута ES5 [[Configurable]].
Свойство аксессуара

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

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

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

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

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

Даты

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

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

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

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

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

являются новинкой в ​​JavaScript с ECMAScript 2015 и представляют собой массивное представление базового буфера двоичных данных. Следующая таблица помогает определить эквивалентные типы данных C:

Тип Диапазон значений Размер в байтах Описание Web IDL типа Аналог C типа
Int8Array -128 до 127 1 8-битовое целое число со знаком с дополнением до двух байт int8_t
Uint8Array 0 до 255 1 8-битовое целое число без знака октет uint8_t
Uint8ClampedArray 0 до 255 1 8-битовое целое число без знака (фиксировано) октет uint8_t
Int16Array -32768 до 32767 2 16-разрядное целое число со знаком с дополнением до двух короткий int16_t
Uint16Array 0 до 65535 2 16-разрядное целое число без знака короткое без знака uint16_t
Int32Array -2147483648 до 2147483647 4 32-битное целое число со знаком с дополнением до двух длинный int32_t
Uint32Array 0 до 4294967295 4 32-битное целое число без знака длинный без знака uint32_t
Float32Array 1.2E-38 до 3.4E38 4 32-битное число с плавающей запятой IEEE (7 значащих цифр, например, 1,1234567 ) неограниченное поплавок поплавок
Float64Array 5E-324 до 1.8E308 8 64-битное число с плавающей запятой IEEE (16 значащих цифр, например, 1.123.64 - 1 8 64-битное целое число без знака bigint uint64_t (длинное беззнаковое длинное)

Коллекции с ключами: Карты, Наборы, WeakMaps, WeakSets

Эти структуры данных, представленные в ECMAScript Edition 6, принимают ссылки на объекты в качестве ключей. Set и WeakSet представляют набор объектов, а Map и WeakMap связывают значение с объектом.

Разница между Map s и WeakMap s заключается в том, что в первом случае ключи объектов могут быть пронумерованы. Это позволяет оптимизировать сборку мусора в последнем случае.

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

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

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

JSON ( J ava S cript O bject N otation) - это облегченный формат обмена данными, полученный из JavaScript, но используемый многими языками программирования.JSON создает универсальные структуры данных.

Подробнее см. JSON и JSON .

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

JavaScript имеет стандартную библиотеку встроенных объектов.

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

Оператор type of может помочь вам найти тип вашей переменной.

Пожалуйста, прочтите справочную страницу для получения более подробной информации и крайних случаев.

Symbol - Глоссарий веб-документации MDN: Определения терминов, связанных с Интернетом

В JavaScript символ - это примитивное значение.

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

Символ может иметь дополнительное описание, но только для целей отладки.

Символ Значение представляет собой уникальный идентификатор. Например:

 
let Sym1 = Symbol ("Sym")
let Sym2 = Symbol ("Sym")

приставка.журнал (Sym1 === Sym2)



  

Примечание: Если вы знакомы с Ruby (или другим языком), в котором также есть функция под названием «символы» , не обманывайтесь. Символы JavaScript разные.

Тип Symbol - это новая функция в ECMAScript 2015. Для Symbol не существует эквивалента в ECMAScript 5.

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

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

Большинство значений в JavaScript поддерживают неявное преобразование в строку.Например, мы можем предупредить практически о любом значении, и это сработает. Символы особенные. Они не конвертируются автоматически.

Например:

  let Sym = Symbol ("Сим")
предупреждение (сим)
  

Это «языковая защита» от путаницы, потому что строки и символы принципиально разные и не должны время от времени преобразовывать одно в другое.

Если вы действительно хотите показать символ, нам нужно вызвать для него .toString () .

  let Sym = Symbol ("Сим")
предупреждение (Сим.toString ())  

Или вы можете использовать свойство symbol .description , чтобы получить его описание:

  let _Sym = Symbol ("Sym");

предупреждение (_Sym.description);  

Общеизвестные символы

Класс Symbol имеет константы для так называемых хорошо известных символов . Эти символы позволяют вам настроить, как JS обрабатывает объект, используя их в качестве ключей свойств.

Примеры широко известных символов: Символ.итератор для объектов, подобных массиву, или Symbol.search для строковых объектов.

Они перечислены в спецификации в таблице общеизвестных символов:

  • Обозначение. HasInstance
  • Symbol.isConcatSpreadable
  • Символ. Итератор
  • Symbol.toPrimitive
  • … и так далее.

Глобальный реестр символов

Существует глобальный реестр символов, содержащий все доступные символы.К реестру обращаются следующие методы: Symbol.for () и Symbol.keyFor () ; они являются посредниками между глобальной таблицей символов (или «реестром») и средой выполнения. Глобальный реестр символов в основном создается инфраструктурой компилятора JavaScript, а содержимое глобального реестра символов недоступно для инфраструктуры времени выполнения JavaScript, кроме как через эти отражающие методы.

Метод Symbol.for ( tokenString ) возвращает значение символа из реестра, а Symbol.keyFor ( symbolValue ) возвращает строку токена из реестра; каждый является инверсным, поэтому следующее: истинно :

  Symbol.keyFor (Symbol.for ("tokenString")) === "tokenString"
  

Общие знания

Типы данных JavaScript

Переменные JavaScript могут содержать разные типы данных: числа, струны, предметы и др .:

пусть длина = 16; // Число
let lastName = "Johnson"; // Строка
let x = {firstName: "John", lastName: "Doe"}; // Объект

Концепция типов данных

В программировании типы данных - важное понятие.

Чтобы иметь возможность работать с переменными, важно знать кое-что о тип.

Без типов данных компьютер не может безопасно решить эту проблему:

Есть ли смысл добавлять «Вольво» к шестнадцати? Произойдет ли это ошибка или это даст результат?

JavaScript будет рассматривать приведенный выше пример как:

При добавлении числа и строки JavaScript обрабатывает число как нить.

JavaScript оценивает выражения слева направо.Различные последовательности могут дают разные результаты:

В первом примере JavaScript обрабатывает 16 и 4 как числа, пока не достигнет «Volvo».

Во втором примере, поскольку первый операнд является строкой, все операнды рассматривается как струны.



Типы JavaScript являются динамическими

JavaScript имеет динамические типы. Это означает, что можно использовать одну и ту же переменную. держать разные типы данных:

Пример

пусть x; // Теперь x не определено
x = 5; // Теперь x - это число
x = "John"; // Теперь x - строка

Пытаться сам »

Строки JavaScript

Строка (или текстовая строка) - это последовательность символов, например «Джон Доу».

Строки заключаются в кавычки. Вы можете использовать одинарные или двойные кавычки:

Пример

let carName1 = "Volvo XC60"; // Использование двойных кавычек
let carName2 = 'Volvo XC60'; // Использование одинарных кавычек

Пытаться сам »

Вы можете использовать кавычки внутри строки, если они не соответствуют кавычкам. окружающая строка:

Пример

let answer1 = "Все в порядке"; // Одиночная кавычка внутри двойных кавычек
let answer2 = "Его зовут 'Джонни'"; // Одиночные кавычки внутри двойных
let answer3 = 'Его зовут «Джонни»'; // Двойные кавычки внутри одинарных кавычек

Пытаться сам »

Вы узнаете больше о строках позже в этом руководство.


Номера JavaScript

В JavaScript есть только один тип чисел.

Числа можно записывать с десятичными знаками или без них:

Пример

пусть x1 = 34.00; // Записывается с десятичными знаками
let x2 = 34; // Записывается без десятичных знаков

Пытаться сам »

Очень большие или очень маленькие числа можно писать научными (экспоненциальная) запись:

Пример

пусть y = 123e5; // 12300000
let z = 123e-5; // 0.00123

Пытаться сам »

Вы узнаете больше о числах позже в этом руководство.


Логические значения JavaScript

Booleans может иметь только два значения: true или false .

Пример

пусть x = 5;
пусть y = 5;
пусть z = 6;
(х == у) // Возвращает истину
(x == z) // Возвращает ложь

Попробуй сам "

Логические значения часто используются в условном тестировании.

Вы узнаете больше о условное тестирование далее в этом руководстве.


Массивы JavaScript

Массивы JavaScript записываются в квадратные скобки.

Элементы массива разделяются запятыми.

Следующий код объявляет (создает) массив с именем cars , содержащий три Товаров (названий автомобилей):

Индексы массива отсчитываются от нуля, что означает, что первый элемент - [0], второй - [1] и так далее.

Вы узнаете больше о массивах позже в этом руководстве.


Объекты JavaScript

Объекты JavaScript записываются в фигурные скобки {} .

Объект свойства записываются как пары имя: значение, разделенные запятыми.

Пример

const person = {firstName: "John", lastName: "Doe", возраст: 50, eyeColor: "blue"};

Попробуй сам "

Объект (человек) в приведенном выше примере имеет 4 свойства: firstName, lastName, age и eyeColor.

Вы узнаете больше о объектах позже в этом руководстве.


Тип оператора

Вы можете использовать оператор JavaScript typeof , чтобы найти тип переменной JavaScript.

Оператор typeof возвращает тип переменной или выражения:

Пример

typeof "" // Возвращает "string"
typeof "John" // Возвращает "string"
typeof "John Doe" // Возвращает "строка"

Попробуй сам "

Пример

typeof 0 // возвращает "number"
typeof 314 // Возвращает "number"
typeof 3.14 // Возвращает "number"
typeof (3) // Возвращает "number"
typeof (3 + 4) // Возвращает «номер»

Попробуй сам "

Вы узнаете больше о типе типа позже в этом руководстве.


Не определено

В JavaScript переменная без значения имеет значение undefined . Тип также undefined .

Любую переменную можно очистить, установив значение undefined . Тип также будет undefined .

Пример

car = undefined; // Значение не определено, тип не определен

Попробуй сам "

Пустые значения

Пустое значение не имеет ничего общего с undefined .

Пустая строка имеет как допустимое значение, так и тип.





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

JavaScript 101 - это серия обучающих видеороликов, предоставленных инструкторами по веб-разработке DevMountain. Щелкните здесь, чтобы просмотреть всю серию видео.

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

Транскрипция видео

Типы данных описывают различные типы или виды данных, с которыми мы будем работать и хранить в переменных.

В Javascript существует пять основных или примитивных типов данных. Пять основных типов данных - это строки, числа, логические значения, неопределенные и пустые.Мы называем их примитивными типами данных. Одна переменная может хранить только один тип данных. Это означает, что вам важно научиться правильно хранить данные.

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

Обзор пяти основных типов данных

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

Логические значения могут иметь только два значения. Правда и ложь.Они представляют все данные, которые имеют только два состояния, как выключатель света. Вкл или выкл. Неопределенный тип данных означает, что переменная была создана, но ей никогда не было присвоено значение. Это ничто, потому что никто никогда не удосужился сказать, какой он должен быть. Null похоже на undefined, за исключением того, что он должен быть установлен намеренно. Это также означает пустой или ничего, но так потому, что разработчик сказал ему, что он пуст или ничего.

Два других общих типа данных: объекты и массивы

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

Это только некоторые из типов данных, которые вы будете использовать. Мы рассмотрим, как именно писать синтаксис для каждого из них в будущем, а также почему вы можете использовать один вместо другого. А пока просто помните, что компьютер по-другому думает о данных и информации. У него разные ведра для разных типов. Нам нужно изучить эти типы и узнать, когда использовать правильные в правильных сценариях.

Строки, числа и логические значения - самые простые и распространенные типы данных

Некоторые из наиболее простых и распространенных типов, с которыми мы столкнемся, это сначала строки, затем числа, а затем логические значения.

Струны

Строка - это набор буквенно-цифровых символов. Я начинаю строку с ввода двойных кавычек, одинарных кавычек или символа обратной кавычки. Двойные и одинарные кавычки работают одинаково, а обратная кавычка имеет некоторые дополнительные функции.

Давайте остановимся на основах. Здесь у нас есть строка с двойными кавычками. Я набрал слово «строка», но кавычки - это то, что мне нужно, чтобы на самом деле сказать, что я создаю строку. Затем внутри цитаты я могу написать все, что захочу. «Собака вышла на прогулку до 7-11». Вы заметите, что все они остаются одного цвета, потому что они заключены в кавычки. Если бы я скопировал это и поместил вне кавычек, вы заметили бы, что раскраска в моем редакторе совсем другая. Это потому, что этот синий цвет по умолчанию в моей текущей схеме пытается найти переменную с этим именем.Это не находит. В этом нет никакого смысла. Он не знает, что пытается сделать здесь 7-11 и другие странные вещи.

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

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

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

Числа

Номера. Поговорим о цифрах. Числа настолько просты, насколько кажутся. Цифры вместо чисел. Я не могу написать здесь письмо. Это больше не число, и раскраска становится напуганной. Он больше не зеленый. Но я могу сделать это число сколь угодно длинным. Я не могу добавить запятую, но могу добавить десятичную точку. Таким образом, числа - это любое целое или десятичное число, созданное на языке, и они используются для обозначения денег, возраста и т. Д. Точно так же, как мы используем деньги здесь в реальной жизни.

Логические

Логические значения имеют два значения. Правда и ложь. Когда мы создаем логическое значение, мы просто говорим, что оно истинно или ложно. Это похоже на тот пример включения / выключения, о котором мы говорили. Это все, что им нужно прямо сейчас. Мы поговорим о других аспектах игры с этими переменными в другой раз.

Я собираюсь обозначить их для тех из вас, кто задумался на минутку. Это были струны. Это число, и это логическое значение, которое время от времени также называется bool.Отлично. Далее мы поговорим о null и undefined.

Нулевые и неопределенные

Как мы уже упоминали в концептуальных видеороликах, null и undefined означают пустоту. Это означает, что они не имеют никакой ценности. Разница undefined существует, когда мы не указали значение. Если бы я пошел на вар рифму и сделал бы старый добрый классический: «Розы красные, а фиалки синие». Это строка. Я собираюсь ... Я сказал вам использовать обратные кавычки, поэтому я собираюсь использовать обратные кавычки.Видишь ли, если я могу это сделать, ты справишься. Если вы просто использовали неправильную цитату, ничего страшного. Просто не забудьте исправить это. «Розы читаются, а фиалки синие». Поместите это в переменную.

Но если бы я не присвоил этому значению рифму, теперь рифма имеет значение undefined. Создана рифма, выделено хранилище для запоминания данных, но поскольку туда ничего не было помещено, это не определено. Я собираюсь перехватить этого парня, целиком это предложение, вернуть его и переместить это предложение сюда, исправить мой синтаксис.Итак, мы идем. У меня здесь есть копия моей рифмы. Я назову это рифмой1 и рифмой2. Здесь у меня есть ценность, и, возможно, как разработчик по причинам, которые возникнут позже, я решаю, что хочу избавиться от этой рифмы. Я могу установить для него значение null. Я специально сделал это как разработчик, используя присвоение переменных со знаком равенства.

Вот и все, что нужно для null и undefined. Одна из важных вещей, которую следует помнить, заключается в том, что если вы никогда не давали переменной значение, оно не определено. И каждый раз, когда вы пытаетесь получить доступ к имени переменной, которое, например, не было создано, я мог бы поискать rhyme3.Этого не существует, потому что я его не создавал. JavaScript просто предположит, что он не определен. Если бы я попытался с ним взаимодействовать, он дал бы мне значение undefined. Часто я могу сломать свой код, поэтому мы не хотим этого делать, но важно понимать, что поведение JavaScript по умолчанию - это все, что не определено, пока ему не будет присвоено значение. Как только чему-то присвоено значение, мы можем очистить его, передав значение null.


[cta vid = "0"]

Рекомендуемая литература

Шпаргалка CSS: Краткое руководство по каскадным таблицам стилей

Памятка по кодированию HTML: ваш доступный ресурс для элементов, атрибутов и тегов HTML

Список языков программирования, которые должен знать каждый программист (или, по крайней мере, знать о нем)

Сводка типов данных в JavaScript | от TRAN SON HOANG

Фотография Клема Оноджехуо на Unsplash

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

В этой статье я расскажу о 8 типах данных, которые в настоящее время существуют в JavaScript.

  1. String
  2. Number
  3. Boolean
  4. Null
  5. Undefined
  6. Symbol
  7. BigInt
  8. Object

Для получения дополнительных сведений см. https://betterfullstack.com

Перед тем, как мы начнем , Я просто хочу еще раз рассказать, как мы определяем примитив в JavaScript и как его запоминать.

Примитив (примитивное значение, примитивный тип данных) - это данные, которые не являются объектом и не имеют методов. Существует 7 примитивных типов данных: строка, число, bigint, логическое значение, null, undefined и символ.

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

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

с индексом и длиной

Вы можете использовать оператор + для объединения нескольких строк. Пример строки

с оператором +

Или вы можете использовать символ обратной косой черты ( «\» ) в конце каждой строки, чтобы указать, что строка будет продолжена на следующей строке. Пример строки

с обратной косой чертой

Примечание:

  1. Чтобы вырезать строку, мы можем использовать такой метод, как String.substr () .
  2. Для объединения строки мы можем использовать такой метод, как String.concat () .
  3. Для доступа к символу у нас есть 2 способа: charAt () и передать индекс символа в строку, как в примере выше, в этом случае строка обрабатывается как массив.

Числовой тип - это значение IEEE 754 в 64-битном двоичном формате с двойной точностью. Для целых чисел не существует определенного типа.

Тип числа имеет три символьных значения: + Infinity , -Infinity и NaN (не число).

Можно использовать константы Число.MAX_VALUE или Number.MIN_VALUE для наибольшего и наименьшего доступного значения.

Вы можете использовать константы Number.MAX_SAFE_INTEGER и Number.MIN_SAFE_INTEGER для проверки безопасности для целых чисел.

образец числа с некоторыми константами

Тип числа имеет только одно целое число, которое имеет два представления: 0 представлен как -0 и +0. («0» является псевдонимом для +0)

отсчет числа с нулем

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

Все приведенные ниже значения считаются ложными , когда они преобразуются / приводятся к логическому значению. То есть они считаются «ложными» в JavaScript, потому что приведение типов в JavaScript преобразует их в false при использовании в качестве логического:

  1. 0 и -0
  2. null
  3. false
  4. NaN
  5. undefined
  6. пустая строка: ''

Примечание:

Любой объект (кроме undefined или null ), включая объект Boolean со значением false , принимает значение истинно при передаче в условный оператор.

образец логического значения при переходе к оператору условия

Значение null представляет преднамеренное отсутствие какого-либо значения объекта.

Нулевое значение часто получается в том месте, где можно ожидать объект, но ни один объект не является релевантным. Переменная, для которой установлено значение null , объявлено как намеренно пустое / пустое.

нулевой образец в javascript

пользователь , как известно, существует в момент выполнения кода, но он не имеет значения, то есть это null .

Глобальное свойство undefined представляет примитивное значение undefined .

Переменная, которой НЕ было присвоено значение, имеет тип undefined .

Функция возвращает неопределенное значение, если значение не было возвращено.

undefined value

Сравните undefined и null .

сравнение между null и undefined

Разница между null и undefined состоит в том, что переменная null явно объявлена ​​как пустая, а undefined просто не присвоено значение и неявно пусто.

Символ - это уникальное уникальное значение и неизменяемое примитивное значение , которое может использоваться в качестве ключа свойства объекта.

Символы не преобразуются автоматически в «строки»

не могут преобразовать символ в строку

Невозможно преобразовать значение Symbol в число

не может преобразовать символ в число

При использовании свободного равенства:

не может преобразовать символ в символ

Symbol объекты-оболочки как ключи свойств:

с использованием символа с именем свойства объекта

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

BigInt создается путем добавления n в конец целочисленного литерала.

способ создания BigInt

BigInt похож на Number , но все же отличается в некоторых областях:

  1. Его нельзя использовать с методами во встроенном объекте Math .
  2. Его нельзя смешивать с экземплярами Number в операциях.
  3. Это не строго равно значению Number

BigInt ведет себя как Number в тех случаях, когда оно преобразуется в логическое значение.

Примечание:

BigInt не поддерживается в Edge, Internet Explorer, Safari, Safari в IOS и Samsum Internet.

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

Идентификатор - это последовательность символов в коде, которая идентифицирует переменную, функцию или свойство.

В JavaScript объекты можно рассматривать как набор свойств. Есть два типа свойств объекта, которые имеют определенные атрибуты: свойство данных и свойство доступа.

Свойство Data: связывает ключ со значением.

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

Примечание:

  1. Имена свойств объекта могут быть любой строкой, включая пустую строку, или символом.Если имя свойства не может быть допустимым идентификатором или числом JavaScript, его необходимо заключить в кавычки.
  2. Значения могут быть любыми.
  3. JSON (нотация объектов JavaScript) - это облегченный формат обмена данными, полученный из JavaScript, но используемый многими языками программирования. Он может хранить только данные, но не методы.

В JavaScript и массивы , и функции являются объектами . Массив - это просто объект, ключи которого являются целыми числами, он содержит методы для работы с массивом.Функция - это просто «исполняемый объект».

В этой статье мы узнаем о 8 типах данных в JavaScript.

Мы узнали, что типы данных, которые не являются объектами и не имеют методов, являются примитивными типами данных. Мы также знаем, что число может быть представлено типом Number и типом BigInt .

Кроме того, мы узнали разницу между null и undefined .

Надеюсь, статья оказалась для вас полезной! Вы можете подписаться на меня на Medium.Я тоже в Твиттере. Не стесняйтесь оставлять любые вопросы в комментариях ниже. Буду рад помочь!

[1]: структура данных https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures

[2]: примитивный JavaScript https://developer.mozilla.org/en-US / docs / Glossary / Primitive

Основы JavaScript: типы и структуры данных | от CodeDraken

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

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

- - Предварительные требования
- Типы и основы структур данных
- - Есть ли типы в JS?
- - Статически типизированный
- - Динамически типизированный
- - Слабо типизированный
- - Примитивы
- - Объекты
- - Так когда это сбивает с толку?
- Важные рекомендации
- Некоторые непонятные детали
- - Почему объект не имеет значения NULL?
- - Почему число не является числом?
- - Двойное равенство против тройного равенства
- - Примитив не является объектом и не имеет собственных методов
- Советы и уловки
- Ссылки и ссылки

Предварительные требования

Для этой темы ничего не требуется.Это основная фундаментальная часть любого языка, но в JavaScript она быстро сбивает с толку.

Мы будем использовать тип оператора , чтобы изучить типы, указанные ниже.

Есть ли типы в JS?

Кто-то может возразить, что JS нетипизирован или что он не должен вызывать свои типы системного типа. При создании переменной не требуется объявлять тип, как в некоторых других строго типизированных языках, например, int x = 10 Я (и спецификации JS) утверждают, что JS действительно имеет типы.

JS - это с динамической типизацией и со слабой типизацией .

Статически типизированный

JS не является статически типизированным, если вы не используете язык, инструмент, такой как Typescript или Flow, который компилируется в код JS. Но мы кратко рассмотрим это для сравнения.

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

 int x = 5 
string y = 'abc'

Динамически типизированный

Динамически типизированные языки определяют типы переменных во время выполнения .Это означает, что после запуска вашего кода компилятор / интерпретатор увидит вашу переменную и ее значение, а затем решит, какой она тип. Тип по-прежнему применяется здесь, он просто определяет, какой тип.

 var a = 1 // int 
b = 'test' // string
// etc

Слабо типизированный

Слабо типизированные языки позволяют выводить типы как другой тип . Например, 1 + '2' // '12' В JS он видит, что вы пытаетесь добавить число со строкой - недопустимая операция - поэтому он преобразовывает ваш номер в строку и приводит к строке '12 '.

Примитивы

Эти шесть типов считаются примитивами . Примитив не является объектом и не имеет собственных методов. Все примитивы неизменяемы .

  • Boolean - истина или ложь
  • Null - значение отсутствует
  • Undefined - объявленная переменная, но не имеет значения
  • Number - целые числа, числа с плавающей запятой и т. Д.
  • String - массив символов, то есть слов
  • Символ - уникальное значение, не равное никакому другому значению.

Все остальное относится к типу Object .Основы

примитивов

Объекты

Вот некоторые из стандартных объектов. Обратите внимание, что некоторые из них тоже были в примитивном списке, но не путайте их. Они действуют как конструкторов для создания этих типов. т.е. Boolean ('a') // true

Есть два основных объекта, которые вы будете использовать для своих собственных структур:

Есть много других объектов, просто перечислим несколько:

  • Function
  • Boolean
  • Symbol
  • Error
  • Number
  • String
  • RegExp
  • Math
  • Set
Основы объектов

Итак, когда это сбивает с толку?

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

Далее я рассмотрю некоторые другие запутанные части, а также некоторые советы и рекомендации.

  • Все примитивные значения неизменяемы
  • Помните о приведении типов
  • Статической типизации нет, т.е. int num = 5
  • Механизм JavaScript решает, какой это тип

В JavaScript много запутанных частей - см. Wtf JS?

Почему объект не имеет значения?

В документации он указан как примитивный тип, но его тип возвращает «объект» .

По сути, это ошибка, которую не исправляют, потому что она нарушает существующий код. Эта ошибка существует с первой версии JavaScript. Ошибка возникает из-за функции type of в исходном коде JS - я воспользуюсь псевдокодом, чтобы упростить ее.

псевдотип

Вы поймали ошибку? Они не проверяли наличие null

. Подробнее об отклоненном предложении по исправлению здесь и этой части исходного кода JS.

Почему число не является числом?

typeof NaN // 'число' WTF !?

Короткий ответ заключается в том, что NaN определяется как числовой тип, но это не действительное число. NaN - это результат некоторых математических операций, которые нельзя выразить количественно в виде числа.

Или, еще короче, потому, что так сказано в спецификации.

Double Equals vs Triple Equals

На эту тему также есть статья о CodeBurst.

В случае сомнений всегда используйте тройное значение .

Примитив не является объектом и не имеет собственных методов

«Вы сказали, что у примитивов нет методов, но затем объясните, как 'abc'.длина работает! »

Это не было ошибкой и исходит из самой документации.

A примитив (примитивное значение, примитивный тип данных) - это данные, которые не являются объектом и не имеют методов В JavaScript есть 6 примитивных типов данных: строка , число , логическое , null , неопределенный символ , неопределенный символ , неопределенный символ новое в ECMAScript 2015).

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

См. несколько примеров ниже.

строка - примитив

Строки на самом деле являются примитивами, как описано в статье, а не целыми объектами.JS знает, когда вы пытаетесь получить доступ к методу объекта String , а переводит ваш примитив в строковый объект . Когда это будет сделано, временный объект будет удален, и его жизнь будет продолжаться в обычном режиме.

строковый конструктор

Подробнее об этом читайте в книге YDKJS Кайла Симпсона:

Способы использования типов в ваших интересах.

Используйте их с осторожностью. По большей части вы должны использовать Number (str) parseInt (x) String (num) и т. Д.Они здесь, поэтому, если вы увидите это в чужом коде, вы будете знать, что он делает. Или, если вы играете в кодовый гольф ⛳️

трюков - преобразование типов, значение по умолчанию, коротко, если

Спасибо за чтение! Вопросы / отзывы оставляйте в комментариях.

Руководство для начинающих по переменным и типам данных JavaScript

Руководство для начинающих по переменным и типам данных JavaScript было рецензировано Скоттом Молинари, Вилданом Софиксом и Крисом Перри. Спасибо всем рецензентам SitePoint за то, что они сделали контент SitePoint как можно лучше!

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

Это руководство для меня?

Если что-либо из этого относится к вам, вам будет полезно прочитать это руководство:

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

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

Заявление об отказе от ответственности: Это руководство предназначено для начинающих пользователей JavaScript и программирования. Таким образом, многие концепции будут представлены в упрощенном виде, и будет использоваться строгий синтаксис ES5.

Готовы? Давайте начнем!

Что такое JavaScript?

JavaScript - это язык программирования, используемый для создания динамических и интерактивных веб-сайтов. Это клиентский язык программирования , что означает, что код выполняется в веб-браузере пользователя. С появлением Node.js и других технологий он также может использоваться как серверный язык , что делает его чрезвычайно универсальным. JavaScript используется в основном для интерфейсной веб-разработки и тесно взаимодействует с HTML и CSS.

Примечание. Java - это не JavaScript. Это другой язык с очень похожим названием.

Требования

У вас уже есть предпосылки, чтобы начать писать и использовать JavaScript. Все, что вам нужно, это веб-браузер для просмотра кода и текстовый редактор для его написания. Браузер, который вы сейчас используете, идеален (Chrome, Firefox, Safari, Edge и т. Д.). На вашем компьютере предустановлен Блокнот (Windows) или TextEdit (Mac), но я бы рекомендовал установить Atom или Brackets, бесплатные программы, специально разработанные для кодирования.

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

Основная терминология

Программист пишет программы, как автор пишет книгу.

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

Комментарий - это удобочитаемая заметка, записанная в коде.

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

В JavaScript есть два типа комментариев:

  • Однострочный комментарий , записанный как две косые черты // , за которыми следует комментарий.
 
  
  • Многострочный комментарий , который находится между / * и * / и может занимать много строк.
 
  

Переменные

Переменная - это контейнер, в котором хранятся значения данных.

Вы знаете переменную как нечто, что может изменяться. В базовой алгебре это буква, обозначающая число. x - это общее имя переменной, но его можно так же легко представить как y , z или другое имя.

Изначально x не имеет значения или значения, но вы можете применить к нему значение.

  х = 5
  

Теперь x представляет 5 . Вы можете представить себе x как контейнер, в котором хранится 5 , то есть число.

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

Переменные создаются и объявляются с использованием ключевого слова var . Мы можем использовать приведенный выше пример алгебры для создания оператора JavaScript.

  var x = 5;
  

Опираясь на то, что мы узнали до сих пор, вы можете видеть, что у нас есть оператор JavaScript, который объявляет переменную ( x ), назначает числовой тип данных ( 5 ) с одним знаком равенства ( = ) , и объясняет это простым английским языком с комментарием ( // ).Заявление заканчивается точкой с запятой (; ).

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

  var x = 5;
х = 6;
  

Переменная может содержать только одно значение за раз, и поскольку программа выполняется сверху вниз, значение x теперь равно 6 .

Вот пример переменной с другим типом данных.

  var приветствие = "Привет, Марк!";
  

Теперь переменная приветствия содержит строку О, привет, Марк! .

Несколько важных фактов о переменных:

  • Имя переменной может состоять из букв, цифр, знака доллара ( $ ) и подчеркивания ( _ ), но не может начинаться с числа.
  • Переменная не может быть каким-либо словом в списке зарезервированных ключевых слов.
  • Переменные чувствительны к регистру.
  • Соглашение об именах - camelCase , в котором переменная всегда начинается с нижнего регистра, но каждое последующее слово начинается с буквы верхнего регистра.

Совет: Хотя переменная может иметь любое имя, важно выбирать имена, которые должны быть описательными, но краткими.

Типы данных

Теперь, когда мы знаем о переменных, мы можем узнать о типах данных, которые может содержать переменная.

Тип данных - это классификация данных.Языки программирования должны иметь разные типы данных для правильного взаимодействия со значениями. Вы можете выполнять математические вычисления с числами, но не с предложениями, поэтому компьютер классифицирует их по-разному. Существует шесть примитивных (базовых) типов данных: строки, числа, логические, нулевые, неопределенные и символы (новые в ES6). Примитивы могут содержать только одно значение. Все, что не является одним из этих примитивов, является объектом Object . Объекты могут содержать несколько значений.

JavaScript известен как слабо типизированный язык (или слабо типизированный ), что означает, что язык автоматически определяет тип данных на основе синтаксиса, который вы используете.

Тестирование

alert () и console.log () - два простых способа распечатать значение в JavaScript.

  var x = 5;

предупреждение (х);
console.log (х);
  

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

Вы всегда можете узнать тип переменной с помощью типа .

  var answer = 42;

тип ответа
  

Струны

Строка - это последовательность символов.

Любые данные, содержащие текст, будут представлены строкой. Название string , вероятно, произошло от ранних программистов, которым напоминали бусинки на веревочке.

  • Строку можно заключить в двойные кавычки ( "" ):

      "Потяните за веревку, и она будет следовать, куда вы хотите.";
      
  • или одинарные кавычки ( '' ):

      'Толкните его, и он вообще никуда не денется.';
      

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

Оба конца строки должны совпадать, но в остальном разницы между ними нет - это просто разные способы записи строки.

Но что, если я хочу написать Я в строке с одинарными кавычками или процитировать кого-то в строке с двойными кавычками? Разве это не порвет струну?

Будет, и есть два варианта борьбы с этим. Можете смело использовать противоположный тип котировок:

  «Черт побери, я же врач, а не торпедоносец!»;
«Делай. Или не делай. Нет попытки». - Йода ';
  

На протяжении всего проекта важно выбирать один стиль струн для единообразия.Вы можете использовать обратную косую черту ( \ ) до , чтобы избежать строки.

  «Черт побери, я же врач, а не торпедоносец!»;
"\"Делать. Или нет. Нет попытки. \ "- Йода";
  

Мы можем применять строки к переменным. Давайте возьмем мой пример приветствия .

  var приветствие = "Привет, Марк!";
  

Строки также можно связать вместе в процессе, известном как конкатенация . Переменные и строки можно соединить вместе с помощью символа плюса ( + ).

  var приветствие = "О, привет" + "Отметить" + "!";
  

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

  var message = "Привет,";
var firstName = "Отметить";
вар бам = "!";

var приветствие = сообщение + firstName + bam;
  

Теперь все строки представлены переменными, которые могут изменяться. Если вы когда-либо входили в приложение (например, электронную почту) и вас приветствовали своим именем, вы можете увидеть, что ваше имя является просто строкой в ​​переменной в их системе.

номеров

Номер - это числовое значение.

Числа не имеют никакого специального синтаксиса, связанного с ними, как строки. Если вы поместите число в кавычки ( "5" ), оно будет считаться не числом, а символом в строке. Число может быть целым или десятичным (известное как число с плавающей запятой) и может иметь положительное или отрицательное значение.

  var x = 5;
var y = 1,2;
var z = -76;
  

Номер может содержать до 15 цифр.

  var largeNumber = 999999999999999;
  

Вы можете выполнять обычные вычисления с числами - сложение ( + ), вычитание ( - ), деление (/) и умножение ( + ).

  var sum = 2 + 5;
var разница = 6 - 4;
  

Вы можете заниматься математикой с переменными.

  var elves = 3;
var dwarves = 7;
var men = 9;
вар саурон = 1;

var RingOfPower = эльфы + гномы + люди + саурон;
  

Есть еще два специальных типа номеров.

NaN

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

  var nope = 1 / "Один";
  

Попытка разделить число на строку, например, приводит к NaN .

бесконечность

Infinity также технически является числом, либо произведением деления на 0 , либо вычислением слишком большого числа.

  var за пределами = 1/0;
  

логический

Логическое значение - это значение, которое может быть истинным или ложным.

Логические значения очень часто используются в программировании, когда значение может переключаться между «да» и «нет», «включено» и «выключено» или «истина» и «ложь». Логические значения могут представлять текущее состояние чего-то, что может измениться.

Например, мы будем использовать логическое значение, чтобы указать, установлен ли флажок.

  var isChecked = true;
  

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

 
7> 8;


var color = "Синий";

цвет === «Синий»;
  

Примечание: Одиночный знак равенства ( = ) применяет одно значение к другому. Двойной ( == ) или тройной знак равенства ( === ) проверяет, равны ли две вещи.

Не определено

Неопределенная переменная не имеет значения.

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

  var вещь;
  

Если вы не объявите переменную с var , она все равно не определена.

  другой вид;
  

Пусто

Нулевое значение - это значение, которое ничего не представляет.

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

  var empty = null;
  

Разница между null и undefined довольно тонкая, но главное отличие состоит в том, что null - это намеренно пустое значение.

Символ

A Symbol - это уникальный и неизменяемый тип данных.

Символ - это новый примитивный тип данных, появившийся в последней версии JavaScript (ES6). Его главная особенность заключается в том, что каждый символ представляет собой полностью уникальный токен, в отличие от других типов данных, которые могут быть перезаписаны.

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

  var sym = Symbol ();
  

Объектов

Объект - это набор пар имя / значение.

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

Вы можете создать объект с парой фигурных скобок ( {} ).

  var batman = {};
  

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

Имущество Метод
batman.firstName Бэтмен. Бой ()
batman.location batman.jump ()

Мы можем применить некоторые свойства к объекту batman , используя пары имя / значение (иногда называемые парами ключ / значение ). Они будут разделены запятыми и записаны как propertyName: propertyValue .

  var batman {
  firstName: "Брюс",
  lastName: "Уэйн",
  локация: "Готэм",
  введен: 1939 г.
  миллиардер: правда,
  слабость: ноль
};
  

Примечание: последний элемент в списке свойств объекта не заканчивается запятой.

Как видите, мы можем применить любой примитивный тип данных в качестве значения в объекте. Мы можем получить отдельное значение с помощью точки (. ).

  batman.firstName;
  

Мы также можем получить значение в скобках.

  Бэтмен ["firstName"];
  

Имя свойства JavaScript должно быть допустимой строкой JavaScript или числовым литералом. Если имя начинается с числа или содержит пробел, для доступа к нему необходимо использовать скобки. Прочтите: MDN

  batman.secret identity;
Бэтмен ["Секретная личность"];
  

Метод выполняет действие. Вот простой пример.

  var batman {
  firstName: "Брюс",
  lastName: "Уэйн",
  secretIdentity: function () {
    верни это.firstName + "" + this.lastName;
  }
};
  

Вместо простого типа данных в качестве значения у меня есть функция . Функция объединяет firstName и lastName для этого объекта и возвращает результат. В примере этот совпадает с batman , потому что он находится внутри объекта ( {} ).

  batman.secretIdentity ();
  

Метод указан в скобках.( () ).

Массивы

Массив хранит список в одной переменной.

Поскольку массив содержит более одного значения, это тип объекта.

Вы можете создать массив с парой прямых фигурных скобок ( [] ).

  var ninjaTurtles = [];
  

Массивы не содержат пар имя / значение.

  var ninjaTurtles = [
  "Леонардо",
  "Микеланджело",
  "Рафаэль",
  "Донателло"
];
  

Вы можете получить отдельное значение, обратившись к индексу массива .При программировании счет начинается с нуля, поэтому первым элементом в списке всегда будет [0] .

  var лидер = ninjaTurtles [0];
  

Вы можете увидеть, сколько элементов находится в массиве, с помощью свойства length .

  ninjaTurtles.length; длина;
  

Резюме

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

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

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

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