JavaRush /Курсы /Модуль 1: Web Core /Специальные типы в JavaScript

Специальные типы в JavaScript

Модуль 1: Web Core
18 уровень , 1 лекция
Открыта

2.1 Переменные — это ссылки

В JavaScript переменные представляют собой ссылки на объекты, а не саму переменную. Это означает, что, когда вы создаете переменную в JavaScript, вы просто создаете ссылку на объект в памяти.

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

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

Пример:

JavaScript
    
      let a = [1, 2, 3];
      let b = a;

      b.push(4);
      console.log(a);  // Выведет: [1, 2, 3, 4]
    
  

Мы добавляли число 4 в переменную b, но он добавился и в список в переменной а, т. к. на самом деле обе переменные — это всего лишь ссылки на объект список [1, 2, 3]

2.2 Тип undefined

В JavaScript существуют два специальных типа данных: null и undefined. Эти типы часто вызывают вопросы у разработчиков из-за их схожести, но у них разные назначения, и они используются в различных ситуациях. Рассмотрим их подробнее.

Тип undefined

Тип undefined представляет значение переменной, которая была объявлена, но не инициализирована. Это значение также возвращается при доступе к несуществующему свойству объекта или элементу массива, который не существует.

Примеры

1. Неинициализированная переменная:

JavaScript
    
      let x;
      console.log(x); // undefined
    
  

2. Несуществующее свойство объекта:

JavaScript
    
      let obj = {};
      console.log(obj.property); // undefined
    
  

3. Несуществующий элемент массива:

JavaScript
    
      let array = [1, 2, 3];
      console.log(array[5]); // undefined
    
  

4. Отсутствующий аргумент функции:

JavaScript
    
      function myFunction(a, b) {
        console.log(b); // undefined, если вызвано как myFunction(1)
      }
      myFunction(1);
    
  

Свойства undefined:

  • undefined является типом данных и значением
  • typeof undefined возвращает undefined

2.3 Тип null

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

Примеры

1. Инициализация переменной:

JavaScript
    
      let obj = null;
      console.log(obj); // null
    
  

2. Очистка значения переменной:

JavaScript
    
      let user = { name: "Alice" };
      user = null; // user теперь не указывает на объект
    
  

Свойства null:

  • null является значением, представляющим намеренное отсутствие значения
  • typeof null возвращает object, что является признанной ошибкой в языке JavaScript (на самом деле null не является объектом)

2.4 Сравнение null и undefined

Несмотря на то, что null и undefined могут использоваться для обозначения отсутствия значения, они различаются по назначению и контексту использования.

Свойство null undefined
Тип Примитивный тип Примитивный тип
Назначение Намеренное отсутствие значения Неинициализированная переменная
Использование Инициализация переменных, очистка значения Несуществующие свойства, элементы массива
Значение по умолчанию Нет Да (для неинициализированных переменных, параметров функций)

Примеры использования

1. Инициализация переменной объектом или массивом:

JavaScript
    
      let myObject = null;
      let myArray = null;
    
  

2. Проверка значений:

JavaScript
    
      let value;

      if (value === undefined) {
        console.log("Переменная не инициализирована.");
      }

      let result = null;

      if (result === null) {
        console.log("Отсутствие значения.");
      }
    
  

3. Очистка значений:

JavaScript
    
      let person = { name: "Alice" };
      person = null; // Теперь person не указывает на объект
    
  

4. Проверка на существование свойства:

JavaScript
    
      let obj = {};

      if (obj.property === undefined) {
        console.log("Свойство не существует.");
      }
    
  

Понимание различий между null и undefined в JavaScript важно для правильного управления значениями и предотвращения ошибок в коде.

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

Правильное использование этих специальных типов данных делает код более понятным и предсказуемым.

1
Задача
Модуль 1: Web Core, 18 уровень, 1 лекция
Недоступна
Неинициализированная
Неинициализированная
1
Задача
Модуль 1: Web Core, 18 уровень, 1 лекция
Недоступна
Инициализация и очистка
Инициализация и очистка
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Анастасия Уровень 46
6 августа 2025
С числами так работать не будет... Можете попробовать пример:

let a1 = 4
let b1 = a1
b1 = 5
console.log(a1)
console.log(b1)
Помогло знание других языков - примитивные переменные(примитивы) не являются ссылками, почему-то в лекции это не указанно, сначала удивилась, что так работает, но потом увидела, что пример в уроке это массив - а массив это уже объект, а не примитив (примитивы так же являются boolean значения, дробные числа, а вот строки - уже ссылки, но с ними всё сложнее - при их изменении создается новая строка и соответсвенно другая ссылка на объект, поэтому все функции, которые изменяют строки - возвращают результат, а не изменяют внутри переменной). Вообще есть 2 типа переменных - ссылочные и примитивы(всё что не является примитивом - ссылки). Надеюсь не накосячила с объяснениями. Но вы всегда можете это попробовать собственных экспериментах.
Maxim Kulikov Уровень 48
21 июня 2025
Прикольно, мпло того, что на null надо повсеместно делать проверки, так еще и на undefined...