Итак, на предыдущем уроке мы познакомились с примитивными типами данных. Сегодня мы будем изучать тип данных Referral. Итак, начнем.

Тип реферальных данных:

  1. Этот тип переменной не хранит значение, а хранит ссылку.
  2. Движок JS выделяет память в куче для этого типа переменной.
  3. Этот тип данных также называется непримитивным, вторичным или изменяемым типом данных.
  4. Все типы реферальных данных изменяемы. Это означает, что если мы изменим копию реальной переменной, то это изменение можно будет увидеть в исходном объекте.

JavaScript имеет 3 типа реферальных данных:

1. Массив
2. Объект
3. Дата

Множество

1. Объект Array, как и массивы в других языках программирования, позволяет сохранять набор из нескольких элементов под одним именем переменной и имеет элементы для выполнения общих операций с массивами.

2. Массив хранит непрерывно.

Массив можно использовать как:

var arr = [1,2,3,4]
console.log(arr);
console.log(typeof arr);

//Output
>(4) [1, 2, 3, 4]
>object

typeof arr показывает объект. Вы можете понять это как льва в животном. Означает, что лев есть лев, а лев — это что? Лев - животное. так же, как arr является массивом, а также объектом.

3. Массив индексируется. Данные можно получить через index.

var arr = [1,2,3,4];
console.log(arr[0]);
console.log(arr[1]);

//Output
>1
>2

4. Массив изменяем.

var arr = [1,2,3];
var arr2 = arr;
console.log(arr==arr2);//true
console.log(arr===arr2);//true
arr2[0]=10;
console.log(arr);
console.log(arr2);

//Output
>true
>true
>(3) [10, 2, 3]
>(3) [10, 2, 3]

Итак, здесь arr содержит адрес объекта, который является массивом. Пока мы копируем arr в новую переменную с именем arr2, копируется ссылка, которая представляет собой значение, содержащееся в arr. Таким образом, arr и arr2 указывают на один и тот же массив, поэтому, если мы внесем изменения в arr2, это изменение будет отражено в arr.

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

var arr3 = [...arr]; // "..." is called spread operator
arr2[0]=10;
console.log(arr);
console.log(arr2);
arr3[0]=100;
console.log(arr3);
console.log(arr==arr3);
console.log(arr===arr3);

//Output
>(3) [10, 2, 3]
>(3) [10, 2, 3]
>(3) [100, 2, 3]
>false
>false

Оператор Spread распространяет массив arr в новый массив, адрес которого хранится в arr3.

Когда мы теряем, сравниваем arr и arr2, которые указывают на один и тот же массив, поэтому мы получаем true, потому что они оба имеют одинаковую ссылку

когда мы используем строгое сравнение между arr и arr2, мы также получаем true, потому что тип и значение одинаковы.

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

Объект

1. объект представляет собой пару ключ-значение

2. Объект можно использовать как:

var o = {};
console.log(typeof o);

//Output
>object

3. Мы можем найти значение через ключ объекта. Каждый ключ уникален в объекте. в то время как значение может быть одинаковым или другим

var  temp = {delhi:11,hyd:12}
console.log(temp.delhi); 
console.log(temp["delhi"]);
console.log(temp.hyd);
console.log(temp["hyd"]);

//Output
>11
>11
>12
>12

4. Мы можем получить доступ к значению через два синтаксиса с квадратной ([]) скобкой и оператором точки (.), как мы видели в примере выше.

В . Итак, возникает вопрос. В чем разница между оператором точки (.) и квадратной скобкой ([])?

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

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

var ahmad = {name:"Mohd Ahmad",study:"Btech",12:65,"perm add":"Delhi"};
console.log (ahmad.name);
console.log(ahmad["name"]);
// console.log(ahmad.12); through error
console.log(ahmad[12]);
// console.log(ahmad.perm add); through error
console.log(ahmad["perm add"]);

//Output
>Mohd Ahmad
>65
>Delhi

Петли

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

Циклы можно использовать как:

var arr = [1,2,3,4];
for(var i=0;i<arr.length;i++){
    console.log(arr[i]);
}

//Output
>1
>2
>3
>4

JavaScript поддерживает различные типы циклов:
1. for
2. for of
3. for in
4. while
5. do-while

Мы уже видели цикл.

Для/из цикла

for/of может перебирать массив. цикл for не может перебирать объект.

var arr = [1,2,3,4];
for(var element of arr){ 
    console.log(arr[i]);
}

//Output
>1
>2
>3
>4
var ahmad = {name:"Mohd Ahmad",study:"Btech",12:65,"perm add":"Delhi"};
for (var key of ahmad){
    console.log(key,ahmad[key])
}

//Output
>Uncaught TypeError: ahmad is not iterable at <anonymous>:2:17

Итак, здесь мы увидели, что не можем перебирать объект через цикл for/of.

Для/в цикле

Цикл for in используется для обхода пары ключ-значение, поэтому он также может выполнять итерацию по массиву, где ключ является индексом.

var arr = [1,2,3,4];
for (let key in arr){
    console.log(arr[key]);
}

//Output
>1
>2
>3
>4
var ahmad = {name:"Mohd Ahmad",study:"Btech",12:65,"perm add":"Delhi"};
for (var key in ahmad){
    console.log(key,ahmad[key]);
}

//Output
>12 65
>name Mohd Ahmad
>study Btech
>perm add Delhi

Важная заметка

typeof — это оператор, но интервьюер может попытаться убедить вас, что type of — это функция, он покажет вам это:

var a =10;
console.log(typeof (a))

//Output
>number

И он скажет, что typeof — это функция, потому что мы вызываем typeof с фигурными скобками, как мы вызываем функции, но тогда вы можете показать ему это:

var a =10;
console.log(typeof ((((a)))))

//Output
>number

И можем спросить его, можем ли мы вызвать такую ​​функцию с несколькими скобками.

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

На сегодня все, увидимся на следующем уроке.

Я хотел бы выразить благодарность Амиту Сриваставе, сэру Brain Mentors Pvt Ltd, за проведение таких полезных сессий.

Не стесняйтесь связаться со мной на Linked In: https://www.linkedin.com/in/mohd-ahmad-seemapuri/

Спасибо за чтение.