Javascript стал моим основным языком программирования как нового разработчика. Он мощный и предоставляет разработчикам различные типы данных для работы. Здесь мы углубимся в две категории типов данных в JavaScript.

Примитивы

Самый простой тип данных в JavaScript — это примитивы. Они включают в себя числа, строки, логические значения, неопределенные, пустые значения и символы. Они хранят отдельные значения, которые нельзя изменить. Вот примеры использования примитивов.

const number = 100;
const string = "JavaScript is awesome!"
const boolean = true;
const undefinedValue; 
const null = null;
const sym = Symbol('symbol');

Концепция, которую важно знать, заключается в том, что примитивы передаются по значению, о чем я подробнее расскажу здесь. В основном это означает, что при назначении примитива переменной или передаче его в качестве аргумента в функцию создается копия значения. Изменения значения в одном месте не влияют на его значение в другом.

Объекты

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

Мы можем создавать объекты в JavaScript, используя литералы объектов, конструктор объектов или создавая собственные объекты. Вот пример использования литералов объектов:

const house = {
  developer: "Ocean Breeze",
  yearBuilt: 2017,
  currentListingPrice: 750,000,
  bedrooms: 4,
  bathrooms: 2,
  hasPool: true,
  calculateDiscountedPrice: function(discountPercentage) {
    return this.currentListingPrice - (this.currentListingPrice * (discountPercentage / 100));
  }
}

В этом примере мы создали объект house со свойствами developer, yearBuilt, currentListingPrice, bedrooms, bathrooms, hasPool, а также метод calculateDiscountedPrice, который возвращает цену со скидкой текущей цены листинга после передачи ему числа (discountPercentage).

Также важно отметить, что в JavaScript массивы и функции также считаются объектами! Другими словами, они также имеют свойства и методы, как и объекты.

Например, вот массив участников группы The Beatles.

const theBeatles = ["John Lennon", "Paul McCartney","George Harrison", "Ringo Starr"];
console.log(theBeatles.length); // -> 4
theBeatles.pop();
console.log(theBeatles) // -> ["John Lennon", "Paul McCartney","George Harrison"]

В этом примере массив theBeatles имеет свойство length, возвращающее количество элементов в массиве, которое будет равно 4. Мы можем использовать метод pop() для массива, чтобы удалить последний элемент в массиве, и наш результат оставит нам только остальные участники группы.

Вот пример использования функции

function sayJoke(name) {
  return `Why did ${name}'s code break? Because it had too many bugs!`;
}

console.log(sayJoke.name) // -> "sayJoke"
console.log(sayJoke("Sean")); // -> Why did Sean's code break? Because it had too many bugs!

В этом примере функция sayJoke также имеет свойство name, возвращающее имя функции.

Заключение

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