JavaScript Типы данных
Типы данных JavaScript
Переменные JavaScript могут содержать множество типов данных: числа, строки, объекты и многое другое:
var length = 16; // Number
var lastName = "Johnson"; // String
var
x = {firstName:"John", lastName:"Doe"}; // Object
Понятие типов данных
В программировании типы данных являются важной концепцией.
Чтобы иметь возможность работать с переменными, важно знать что-то о типе.
Без типов данных компьютер не может безопасно решить эту проблему:
var x = 16 + "Volvo";
Есть ли смысл добавить "Вольво" в шестнадцать? Приведет ли это к ошибке или приведет к получению результата?
JavaScript будет рассматривать приведенный выше пример как:
var x =
"16" + "Volvo";
При добавлении числа и строки 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 может возвращать один из двух сложных типов:
- function
- object
Оператор 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 массивы являются объектами.