Types
Когда вы указываете значения в программе, вы выбираете разные представления для этих значений в зависимости от того, что вы планируете делать с ними. Разнообразные представления для значений в терминологии программирования называются типы . В JavaScript есть встроенные типы для каждого из этих примитивных значений:
когда вам нужно работать с математикой, вам нужно
число
.когда вам нужно вывести значение на экран, вам нужна
строка
(один или несколько символов, слов, предложений).когда вам нужно принять решение в своей программе, вам нужно
логическое значение
(true
(истина
) илиfalse
(ложь
)).
Значения, непосредственно включаемые в исходный код, называются литералы. строковые
литералы заключаются в двойные кавычки"..."
или одинарные ('...'
) — единственная разница в них — это ваши стилистические предпочтения. Литералы числа
и логического значения
пишутся как есть (т.е.,42
, true
и т.д.).
Кроме типов значений строка/число/логическое значение
для языков программирования привычно предоставлять такие типы, как массивы, объекты, функции и многие другие.
Значения и типы
В JavaScript есть типизированные значения, а не типизированные переменные. Доступны следующие встроенные типы:
string
(строка)number
(число)boolean
(логическое значение)null
(пустое значение)undefined
(значение не объявлено)object
(объект)symbol
(символ, новое в ES6)
JavaScript предоставляет операцию typeof
, которая умеет оценивать значение и сообщать вам, какого оно типа:
Значение, возвращаемое операциейtypeof
, всегда одно из шести (семи в ES6! - тип "symbol") строковых значений. Это значит, что typeof "abc"
вернет"string"
, а неstring.
Обратите внимание, как в этом коде переменная a
хранит каждый из различных типов значений, и, несмотря на видимость, typeof a
спрашивает не "тип a
", а "тип текущего значения в a
." Только у значений есть типы в JavaScript, переменные являются всего лишь контейнерами для этих значений.
typeof null
— это интересный случай, так как он ошибочно возвращает"object"
, тогда как вы ожидали, что он вернет"null".
Это давнишняя ошибка в JS, но она, похоже, никогда не будет исправлена. Слишком много кода в интернет полагается на нее, и ее исправление, соответственно, повлечет за собой намного больше ошибок!
Обратите внимание на a = undefined
. Мы явно установили a
в значение undefined
, но оно по поведению не отличается от переменной, у которой еще не установлено значение, например, как тут: var a;
, в строке в начале блока кода. Переменная может получать состояние значения "undefined" разными путями, включая функции, которые не возвращают значения и использование операции void
.
Числа
Вы можете хранить числа в переменных (целые числа, такие, как 30, или десятичные числа, такие, как 2.456, также называемые числами с плавающей точкой или с плавающей запятой).
Строки
Строки - это фрагменты текста. Когда вы даете переменной значение строки, вам нужно обернуть ее в одиночные или двойные кавычки, в противном случае JavaScript попытается проиндексировать ее как другое имя переменной.
Логические
Booleans - это истинные / ложные значения - они могут иметь два значения: true или false. Они обычно используются для проверки состояния, после чего код запускается соответствующим образом. Так, например, простой случай:
В действительности вы чаще будете использовать этот тип переменных так:
Здесь используется оператор «меньше» (<), чтобы проверить, является ли 6 меньше 3. Как и следовало ожидать, он вернет false, потому что 6 не меньше 3!
Массивы
Массив - это один объект, который содержит несколько значений, заключенных в квадратные скобки и разделенных запятыми. Попробуйте ввести следующие строки в консоль:
Как только эти массивы определены, вы можете получить доступ к каждому значению по их местоположению в массиве. Попробуйте следующие строки:
Квадратные скобки указывают на значение индекса, соответствующее позиции возвращаемого значения. Возможно, вы заметили, что массивы в JavaScript индексируются с нулевой отметкой: первый элемент имеет индекс 0.
Объекты
В программировании объект представляет собой структуру кода, которая моделирует объект реальной жизни. У вас может быть простой объект, представляющий автостоянку, содержащий информацию о ширине и длине, или вы можете иметь объект, который представляет человека и содержит данные об имени, высоте, весе, на каком языке он говорит, как сказать привет и многое другое.
Попробуйте ввести следующую строку в консоль
Чтобы получить информацию, хранящуюся в объекте, вы можете использовать следующий синтаксис:
Преобразование между типами
Если у вас есть число
, но вам нужно вывести его на экран и преобразовать его значение в строку
. В JavaScript такая конвертация называется «приведение (coercion)». Если кто-то вводит серию цифр в форму на веб-странице - это строка
, но если нужно потом использовать это значение для выполнения математических операций, то вам понадобится приведение его к числу
.
JavaScript предоставляет несколько различных возможностей принудительного приведения между типами. Например:
Использование Number(..)
(встроенная функция), как было показано выше, - это явное приведение из любого другого типа в тип число
. Это выглядит достаточно очевидно.
Что произойдет, когда вы попытаетесь сравнить два значения разных типов, которые могут потребовать неявного приведения. При сравнении строки"99.99"
с числом 99.99
многие согласятся, что они равны. Это одно и тоже значение в двух разных представлениях, двух разных типах. Чтобы помочь вам в таких стандартных ситуациях, JavaScript иногда вмешивается и неявно приводит значения к подходящим типам.
Поэтому, если вы используете операцию нестрогого равенства==
для сравнения"99.99" == 99.99
, JavaScript преобразует с левой стороны"99.99"
в его числовой
эквивалент 99.99
. После этого сравнение превращается в99.99 == 99.99
, которое, конечно, является истинным
.
Last updated