Синтаксис JavaScript Справочник JavaScript JSON Коды клавиш События Строгий режим

Типы данных JavaScript

В процессе работы компьютерные программы манипулируют значениями, такими как число 7 или текст "HelloWorld!". Каждое значение, которое может быть представлено и обработано в языке программирования относится к определённому типу данных. Тип данных определяет типы значений, которые используются в языке программирования.

В JavaScript типы данных можно разделить на две категории: простые (их также называют примитивными) типы и составные (их также называют ссылочными или объекты).

К категории простых типов относятся:

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

К составным типам данных относятся:

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

Разница между простыми и составными типами проявляется при копировании значений.

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

var num1 = 10;
var num2 = num1;            // Копируем значение

alert("num1: " + num1 +     // 10
      "\nnum2: " + num2);   // 10

num1 = 15;                  // Изменяем значение

alert("num1: " + num1 +     // 15
      "\nnum2: " + num2);   // 10

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

var o1 = {x:10};
var o2 = o1;                // Копируем ссылку на объект

alert("o1.x: " + o1.x +     // 10
      "\no2.x: " + o2.x);   // 10

o2.x = 15;                  // Изменяем значение

alert("o1.x: " + o1.x +     // 15
      "\no2.x: " + o2.x);   // 15

null и undefined

Тип null имеет всего одно значение – null. Значение null является ссылкой на пустой объект и имеет специальное назначение – обычно оно используется для инициализации переменной, которой впоследствии будет присвоен объект.

Тип undefined имеет всего одно значение – undefined. Значение undefined указывает на изначальное отсутствие какого-либо значения. Получить значение undefined можно следующим образом:

var bar;
document.write(bar);
Попробовать »

Идентификатор undefined является именем предопределённой глобальной переменной, которая инициализирована значением undefined. Переменная undefined доступна только для чтения.

Объекты обёртки

Каждый раз, когда в программе предпринимается попытка обратиться к свойству или методу значения примитивного типа, интерпретатор временно преобразует примитивное значение в объект соответствующего типа. Временные объекты, в которые преобразуются значения примитивного типа, называют объектами обёртками. Эти объекты используются интерпретатором для доступа к нужному свойству или методу. Сразу после обращения к свойству или методу объект обёртка уничтожается. Объекты обёртки создаются только для значений типа number, string и boolean. Значения null и undefined не имеют объектов оберток: любые попытки обратиться к свойствам этих значений будут вызывать ошибку.

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

var str = "текст";
str.len = 5;      // Установить свойство со значением. Сразу после этого объект уничтожается
alert(str.len);   // undefined, так как предыдущий объект обёртка уже уничтожен

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

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | Обратная связь