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

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

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

В JavaScript существует шесть основных типов данных, которые можно разделить на три основные категории: примитивные (или первичные), составные (или ссылочные) и специальные типы данных. String, Number и Boolean являются примитивными типами данных. Object, Array и Function (все типы объектов) являются составными (ссылочными) типами данных. Тогда как Undefined и Null являются специальными типами данных.

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

Давайте рассмотрим каждый из них более подробно.

Тип данных String (строка)

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

var a = 'Hello'; // внутри одинарных кавычек
var b = "Hello"; // внутри двойных кавычек

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

var a = "Let's go out."; // одинарные кавычки внутри двойных кавычек
var b = 'He said "Bye" and left.'; // двойные кавычки внутри одинарных кавычек
var c = 'We\'ll never give up.'; // экранирование одинарной кавычки внутри одинарных кавычек

Тип данных Number (число)

Числовой тип данных используется для представления положительных или отрицательных чисел с десятичным знаком или без него или чисел, написанных с использованием экспоненциальной записи, например, 1,5e-4 (эквивалентно 1,5x10-4).

var a = 25; // число
var b = 80.5; // число с плавающей точкой
var c = 4.25e+6; // экспоненциальная нотация, то же самое что 4.25e6 or 4250000
var d = 4.25e-6; // экспоненциальная нотация, то же самое что 0.00000425

Тип данных Number также включает некоторые специальные значения: Infinity, -Infinity и NaN. Бесконечность представляет математическую бесконечность ∞, которая больше любого числа. Бесконечность - это результат деления ненулевого числа на 0, как показано ниже:

alert(16 / 0); // Вывод: Infinity
alert(-16 / 0); // Вывод: -Infinity
alert(16 / -0); // Вывод: -Infinity

В то время как NaN представляет собой специальное значение Not-a-Number. Это результат неверной или неопределенной математической операции, такой как получение квадратного корня из -1 или деление 0 на 0 и т.д.

alert("Message" / 2); // Результат: NaN
alert("Message" / 2 + 10); // Результат: NaN
alert(Math.sqrt(-1)); // Результат: NaN

Тип данных Boolean (булев тип)

Тип данных Boolean может содержать только два значения: true или false. Обычно он используется для хранения таких значений, как «да» (true) или «нет» (false).

var isActive = true; // активно? да
var isDisabled = false; // выключено? нет

Булевы значения также появляются в результате сравнений в коде программы. В следующем примере сравниваются две переменные и отображается результат в диалоговом окне предупреждения (alert):

var a = 3, b = 7, c = 12;

alert(b > a) // Результат: true
alert(b > c) // Результат: false

Тип данных Undefined (неопределенный тип)

Неопределенный тип данных может иметь только одно значение - специальное значение undefined. Если переменная была объявлена, но ей не было присвоено значение, она имеет значение undefined.

var a;
var b = "Hello!"

alert(a) // Результат: undefined
alert(b) // Результат: Hello!

Тип данных Null (нет значения)

Это еще один специальный тип данных, который может иметь только одно значение - нулевое значение. Нулевое значение означает, что значения нет. Это не эквивалентно пустой строке ("") или 0, это просто ничто.

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

var a = null;
alert(a); // Результат: null

var b = "Hello!"
alert(b); // Результат: Hello!

b = null;
alert(b) // Результат: null

Тип данных Object (объект)

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

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

Следующий пример покажет вам самый простой способ создания объекта в JavaScript.

var someObject = {};
var person = {"name": "John", "lastName": "Doe", "age": "33"};

// Форматирование для читабельности
var car = {
  "model": "Lada Vesta",
  "color": "white",
  "doors": 4
}

Вы можете опустить кавычки вокруг имени свойства, если имя является допустимым именем JavaScript. Это означает, что кавычки обязательны для last-name, но не обязательны для lastName. Таким образом, объект car в приведенном выше примере также может быть записан как:

var car = {
  model: "Lada Vesta",
  color: "white",
  doors: 4
}

Тип данных Array (массив)

Массив - это тип объекта, используемый для хранения нескольких значений в одной переменной. Каждое значение (также называемое элементом массива) имеет числовой индекс, и оно может содержать данные любых типов данных: числа, строки, логические значения, функции, объекты и даже другие массивы. Индекс массива начинается с 0, поэтому первый элемент массива - это arr[0], а не arr[1].

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

var colors = ["Red", "Green", "Blue"];
var cities = ["Moscow", "London", "Paris", "New York"];

alert(colors[0]); // Результат: Red
alert(cities[2]); // Результат: Paris

Тип данных Function (функция)

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

var greeting = function(){
  return "Hello!";
}

// Проверка типа переменной greeting
alert(typeof greeting) // Результат: function
alert(greeting()); // Результат: Hello!

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

function makeGreeting(name){
  return "Hello, " + name;
}
function showGreeting(greetingFunction, userName){
  return greetingFunction(userName);
}

var result = showGreeting(makeGreeting, "Vasya");
alert(result); // Результат: Hello, Vasya

Оператор typeof (определение типа данных в JavaScript)

Оператор typeof может использоваться для определения типа данных, содержащихся в переменной или операнде. Может использоваться с круглыми скобками или без них (typeof (x) или typeof x).

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

// Числа
typeof 15; // Результат: "number"
typeof 42.7; // Результат: "number"
typeof 2.5e-4; // Результат: "number"
typeof Infinity; // Результат: "number"
typeof NaN; // Результат: "number", несмотря на тип "Not-A-Number"

// Строки
typeof ''; // Результат: "string"
typeof 'hello'; // Результат: "string"
typeof '12'; // Результат: "string", число в кавычках - строка

// Булев тип
typeof true; // Результат: "boolean"
typeof false; // Результат: "boolean"

// Undefined
typeof undefined; // Результат: "undefined"
typeof undeclaredVariable; // Результат: "undefined"

// Null
typeof Null; // Результат: "object"

// Objects
typeof {name: "John", age: 18}; // Результат: "object"

// Arrays
typeof [1, 2, 4]; // Результат: "object"

// Functions
typeof function(){}; // Результат: "function"

Как вы можете видеть в приведенном выше примере, когда мы тестируем null с помощью оператора typeof, он возвращает object вместо null.

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

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

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

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


*