Elementor Header #8

20. Неизменяемость примитивных типов

В JavaScript существует два основных типа данных: примитивные типы и объекты. Примитивные типы данных (такие как числа, строки, булевы значения, null, undefined, symbol, и bigint) являются неизменяемыми (immutable). Это означает, что их значения нельзя изменить после создания. В этом уроке мы рассмотрим, что такое неизменяемость примитивных типов, почему она важна и как это влияет на работу с данными.

Основные концепции

Что такое неизменяемость:

  • Неизменяемость означает, что значение примитивного типа не может быть изменено после его создания. Любое изменение создает новое значение.
  • Пример:
				
					let str = 'Hello';
str[0] = 'h'; // Попытка изменить строку
console.log(str); // Output: 'Hello' (строка не изменилась)

				
			

Примеры примитивных типов данных:

  • Number: Числа (целые и вещественные).
  • String: Строки символов.
  • Boolean: Логические значения (true и false).
  • Null: Отсутствие значения.
  • Undefined: Неопределенное значение.
  • Symbol: Уникальные и неизменяемые идентификаторы.
  • BigInt: Целые числа произвольной точности.
  • Неизменяемость строк:

Строки в JavaScript являются неизменяемыми. Любое изменение строки создает новую строку.

Пример:

				
					let greeting = 'Hello';
let newGreeting = greeting + ' World';
console.log(newGreeting); // Output: 'Hello World'
console.log(greeting); // Output: 'Hello' (исходная строка не изменилась)

				
			

Неизменяемость чисел:

Числа также являются неизменяемыми. Операции с числами создают новые значения.

Пример:

				
					let x = 10;
let y = x + 5;
console.log(x); // Output: 10 (исходное значение не изменилось)
console.log(y); // Output: 15 (создано новое значение)

				
			

Передача примитивных типов по значению:

Примитивные типы передаются по значению, что означает копирование значения при присвоении переменной или передаче в функцию.

Пример:

				
					let a = 5;
let b = a; // b получает копию значения a
b = 10;
console.log(a); // Output: 5 (a не изменилось)
console.log(b); // Output: 10

				
			

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

Работа с числами:

				
					let num1 = 20;
let num2 = num1 * 2;
console.log(num1); // Output: 20 (исходное значение не изменилось)
console.log(num2); // Output: 40 (создано новое значение)

				
			

Работа со строками:

				
					let text = 'JavaScript';
let upperText = text.toUpperCase();
console.log(text); // Output: 'JavaScript' (исходное значение не изменилось)
console.log(upperText); // Output: 'JAVASCRIPT' (создано новое значение)

				
			

Работа с булевыми значениями:

				
					let isTrue = true;
let isFalse = !isTrue;
console.log(isTrue); // Output: true (исходное значение не изменилось)
console.log(isFalse); // Output: false (создано новое значение)

				
			

Распространенные ошибки

Попытка изменить примитивное значение:

Примитивные значения нельзя изменять напрямую. Любые операции с ними создают новые значения.

				
					let num = 10;
num = num + 5; // Создано новое значение, старое не изменилось
console.log(num); // Output: 15

				
			

Путаница с неизменяемостью строк:

Изменение строки приводит к созданию новой строки, а не изменению исходной.

				
					let originalString = 'Hello';
let modifiedString = originalString.replace('H', 'h');
console.log(originalString); // Output: 'Hello' (исходная строка не изменилась)
console.log(modifiedString); // Output: 'hello' (создано новое значение)

				
			

Заключение

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

Тестовое задание

  1. Создайте переменную типа Number и выполните с ней арифметическую операцию. Проверьте, что исходное значение не изменилось.
  2. Создайте переменную типа String и выполните с ней операцию изменения (например, добавьте к строке другой текст). Проверьте, что исходное значение не изменилось.
  3. Создайте переменную типа Boolean и выполните с ней логическую операцию. Проверьте, что исходное значение не изменилось.
  4. Проверьте передачу примитивного типа по значению, создав копию переменной и изменив её значение. Убедитесь, что исходная переменная не изменилась.

Пример решения:

				
					// Задание 1
let initialNumber = 10;
let newNumber = initialNumber + 5;
console.log(initialNumber); // Output: 10 (исходное значение не изменилось)
console.log(newNumber); // Output: 15 (создано новое значение)

// Задание 2
let initialString = 'Hello';
let newString = initialString + ' World';
console.log(initialString); // Output: 'Hello' (исходное значение не изменилось)
console.log(newString); // Output: 'Hello World' (создано новое значение)

// Задание 3
let initialBoolean = true;
let newBoolean = !initialBoolean;
console.log(initialBoolean); // Output: true (исходное значение не изменилось)
console.log(newBoolean); // Output: false (создано новое значение)

// Задание 4
let original = 42;
let copy = original;
copy = 100;
console.log(original); // Output: 42 (исходное значение не изменилось)
console.log(copy); // Output: 100 (создано новое значение)

				
			

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

logo