Типы данных
Динамическая типизация
JavaScript является слабо типизированным или динамическим языком. Это значит, что вам не нужно определять тип переменной заранее.
Тип определится автоматически во время выполнения программы. Также это значит, что вы можете использовать одну переменную для хранения данных различных типов :
Видео
typeof
Для того чтобы понять тип данных содержащийся в переменной, используется оператор typeof
. Оператор typeof
возвращает тип аргумента.
У него есть два синтаксиса: со скобками и без:
Синтаксис оператора:
typeof x
Синтаксис функции:
typeof(x)
Работают они одинаково, но первый синтаксис короче.
Результатом typeof
является строка, содержащая тип.
Типы данных
Стандарт JavaScript определяет 9 типов данных. Познакомьтесь с каждым из них делая вывод в консоль и после я расскажу о каждом из них подробнее.
let one = { firstName: 'John', lastName: 'Smith' } // object
let two = () => {} // function
let three = 'bar' // string
let four = 42 // number
let five = 19241924124n // bigint
let six = true // boolean
let seven = null // null
let eight // undefined
let nine = Symbol() // symbol
Объекты
В компьютерной терминологии, тип объект object
— это значение в памяти, на которое возможно сослаться с помощью идентификатора. В JavaScript объект может расцениваться как набор свойств. Это как шкаф 🗄️ для хранения других типов данных.
Функции
Функции⚙️ function
— это обычные объекты, имеющие дополнительную возможность быть вызванными для исполнения.
Примитивные значения
Все типы данных в JavaScript, кроме объектов, являются иммутабельными (значения не могут быть модифицированы, а только перезаписаны новым полным значением). Например, в отличии от языка C, где строку можно посимвольно корректировать, в JavaScript строки пересоздаются только полностью. Значения таких типов называются "примитивными значениями".
Текстовые строки
В JavaScript для представления текстовых данных служит тип string
.
Числа
Числовой тип данных number
представляет как целочисленные значения, так и числа с плавающей точкой.
BigInt
В JavaScript тип number
не может содержать числа больше, чем (253-1) (т. е. 9007199254740991), или меньше, чем -(253-1) для отрицательных чисел. Это техническое ограничение вызвано их внутренним представлением.
Для большинства случаев этого достаточно. Но иногда нам нужны действительно гигантские числа, например, в криптографии или при использовании метки времени ("timestamp") с микросекундами.
Тип bigInt
был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.
Булевый тип данных
Булевый тип boolean
представляет логическую сущность и имеет два 2️⃣ значения: true
(истина)
и false
(ложь).
Такой тип, как правило, используется для хранения значений да/нет: true значит «да, правильно», а false значит «нет, не правильно».
Null
Этот тип данных имеет всего одно значение: null
. Это значение, специально обозначенное как примитив, так как по поведению это в самом деле видимый примитив. Но при этом от null
унаследованы все остальные Объекты, поэтому, несмотря на то, что null
возвращает примитивное значение, его тип это объект.
Например можно присвоить его значению по умолчанию.
Undefined
Переменная , которой не было присвоено значение, будет иметь значение undefined
.
Отличия между null и undefined
null
является определенным значением отсутствия объекта, тогда как undefined
обозначает неопределенность. Например вы можете это проверить в консоле браузера:
let TestVar
console.log(TestVar) // undefined
console.log(typeof TestVar) // undefined
null
- это значение присваивания. Он может быть присвоен переменной как представление без значения:
let TestVar = null
console.log(TestVar) // null
console.log(typeof TestVar) // object
Из предыдущих примеров ясно, что undefined
и null
- это два 2️⃣ различных типа: undefined
- это сам тип (неопределенный), а null
- объект.
null === undefined // false
null == undefined // true
null === null // true
Тип данных Символ (Symbol)
Тип символ Symbol
— это уникальное и иммутабельное примитивное значение, которое может быть использовано как ключ для свойства объекта. Этот тип на столько редко используется в реальной работе, что мы даже не будем рассматривать его в рамках этого курса.
Проблемы?
Пишите в Telegram или ВКонтакте, а также подписывайтесь на наши новости
Вопросы:
Для чего используется оператор typeof
?
- Для определения типа данных
- Для вывода типа данных в консоль
- Для ввода новой переменной
Сколько типов данных определяет стандарт JavaScript?
7
9
5
В каком типе данных содержится набор свойств?
function
string
object
Можно ли в JavaScript корректировать строку посимвольно?
- Да
- Возможно в особых случаях
- Нет, строки пересоздаются только полностью
Какой тип данных даёт возможность работать с целыми числами произвольной длины?
number
string
bigInt
Какое из значений не имеет булевый тип boolean
?
false
null
true
Какой из типов данных имеет значение, которое может быть использовано как ключ для свойства объекта?
undefined
symbol
null
Каков тип данных переменной whatTypeAmI
после выполнения этого оператора? \n let whatTypeAmI = 5
integer
number
string
Какой тип данных, возможно, является наиболее часто используемым типом данных в JavaScript?
integer
number
string
Как называется примитивный тип данных, который означает, что никакое другое значение не было присвоено?
undefined
symbol
null
Как называется примитивный тип данных, который в основном ничего не означает (не ноль, не пустая строка, не неопределенный, не ложный и т.д.)?
undefined
boolean
null
Сколько возможных значений для нулевого типа данных?
1 возможное значение (null)
2 возможных значения (null, undefined)
Каково значение myMessage
после этой строки? \n let myMessage
undefined
SyntaxError
null
Для того чтобы понять, на сколько вы усвоили этот урок, пройдите тест в мобильном приложении нашей школы по этой теме или в нашем телеграм боте.
Ссылки:
- MDN web docs
- Код для подростков: прекрасное руководство по программированию для начинающих, том 1: Javascript - Jeremy Moritz
- JavaScript.ru
Contributors ✨
Thanks goes to these wonderful people (emoji key):
Dmitriy Vasilev | Resoner2005 🐛 🎨 🖋 |