1. Нуль против Неопределенного:

Специально для новичков иногда возникает путаница между null и undefined. Давайте проясним путаницу. Предположим, что переменная объявлена, но значение еще не присвоено, и если мы получим доступ к переменной, она даст вывод «undefined». Итак, undefined — это то, что еще не определено. С другой стороны, когда мы намеренно хотим оставить значение переменной пустым, мы используем null.

Такие как:

const _undefined;
console.log(_undefined); //undefined
const _null = null;
console.log(_null); //null (means the variable has no value)

На приведенном ниже рисунке ясно показано, что null vs undefined. Где null означает, что есть баннер «cookies», но внутри нет файлов cookie. С другой стороны, undefined не имеет баннера, определяющего файлы cookie.

2. == vs ===:

В JavaScript очень запутанно, что именно делает тройное равенство. Давайте проясним это на примере:

const number1 = 2;
const number2 = '2';
console.log(number1 == number2); //true
console.log(number1 === number2); //false

В приведенном выше примере, когда используется «==», выражение дает «true», хотя «number1» — это числовой тип, а number2 — строковый тип. Итак, как они могут быть равны? В этом сценарии JavaScript принудительно выполняет приведение типов и делает переменную равной. Вот почему вывод верен, хотя типы переменных не совпадают.

Напротив, «===» выполнял фактическую работу, сравнивая значения, а также их типы. Для этого второй вывод является ложным.

3. Карта, фильтр, поиск:

Карта используется для перебора массива. Такие как,

const smartphones = [
 {model: 'Iphone 12', Brand: 'Apple'},
 {model: 'Galaxy S20', Brand: 'Samsung'},
 {model: 'MI M10T', Brand: 'Xiaomi'},
 {model: 'Oneplus 8T', Brand: 'Oneplus'},
 {model: 'Oneplus 8', Brand: 'Oneplus'},
];
smartphones.map(smartphone => console.log(smartphone.model)); 
output:
//Iphone 12 
//Galaxy S20 
//MI M10T 
//Oneplus 8T
//Oneplus 8

Фильтр используется для фильтрации массива с условием. Например, если мы хотим получить только модель смартфона Oneplus:

const filteredSmartPhone = smartphones.filter(smartphone => smartphone.Brand === 'Oneplus');
filteredSmartPhone.map(smartphone => console.log(smartphone.model));
output:
//Oneplus 8T
//Oneplus 8

Find используется для поиска любого определенного элемента из массива. Он возвращает одно значение:

const firstSmartPhone = smartphones.find(smartphone => smartphone.Brand === 'Oneplus');
console.log(firstSmartPhone.model);
output:
//Oneplus 8T

В приведенном выше примере find выбирает первое значение, которое соответствует условию, и возвращает его.

4. область действия блока:

Область видимости — важный термин в JavaScript. Сфера означает диапазон влияния. Давайте проиллюстрируем область действия блока:

function scope(permission){
  if(permission){
   let _scope = 'This if is a scope';
    console.log(scope);
  }
  console.log(_scope); //error
}
scope(true);

В приведенном выше примере функция области действия представляет собой область действия блока. Внутри функции, если это блочная функция. Посмотрите, как «_scope» недоступен за пределами его области.

Вкратце, «{}» — это область действия, и все, что находится внутри нее, является свойством этой области действия, которое недоступно за ее пределами.

5. Асинхронный:

Асинхронность описывается как процесс, когда процесс не зависит (не нужно ждать) от процесса ввода-вывода. Принимая во внимание, что синхронная необходимость ожидания процесса ввода-вывода означает, что она не работает синхронно с процессом ввода-вывода. Из-за этого асинхронный не имеет зависимостей, поэтому он может выполнять больше работы за раз. Давайте проиллюстрируем пример, чтобы сделать его явным:

async function reverse(){
 const _fetch =  await fetch('https://jsonplaceholder.typicode.com    /users');
  console.log(_fetch);
  const res =  _fetch.json();
  return res;
}
console.log(reverse().then(res => console.log(res)));
console.log('hello');
console.log(reverse());
output:
Promise { <state>: "pending" }
hello
Promise { <state>: "pending" }
//Responce 
//Responce
//resulting array
//resulting array

В приведенном выше примере оператор консоли печатается перед получением URL-адреса. Из-за «асинхронности» процесс не ожидает выборки, тогда как все процессы, описанные ниже, выполняются, и когда URL-адрес извлекается, он просто помещает вывод в цикл событий. Вот почему результирующий вывод занимает место последним, хотя вызывается первым.

6. Перевернуть строку:

const message = '.yas ot teg t'ndid ew sgniht ynam eht fo gnikniht elihW .yadot did uoy yaw eht yrc t'ndluow uoy hcum os hsiw I em rof sraet htiw dellif lla seye ruoy dnif dna esir dluohs nus eht fI .ees ot ereht ton m'I dna ,em tuohtiw strats worromot fI';
let newMessage = '';
for(let i = 0; i < message.length; i++){
  newMessage = message[i] + newMessage;
}
console.log(newMessage);

Смотрите вывод в консоли.

7. Удалить дубликат из массива:

Существует множество способов удалить дубликаты из массива. Но я думаю, что это самое короткое из всех:

const arrayOfDuplicates = [0, 1, 1, 3, 4, 7, 11];
console.log(Array.from(new Set(arrayOfDuplicates))); 
output:
//[0, 1, 3, 4, 7, 11]

8. Сумма элементов массива:

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

const _array = [1, 2, 3, 4, 5];
console.log(
        _array.reduce((total, currentValue) => total + 
         currentValue,0)
);
output:
//15

9. Рекурсивный ряд Фибоначчи:

Лучшая практика для понимания рекурсии.

const recursiveFactorial = bound => {
 
  if(bound === 0){
   return 1;
  }else{
   return bound * recursiveFactorial(bound - 1);
  }
}
console.log(recursiveFactorial(5));
output:
//120

10. Рекурсивный ряд Фибоначчи:

Простая, но одна из сложных задач:

const recursiveFibonacci = bound => {
 
  if(bound === 0){
   return [0];
  }else if(bound === 1){
    return [0, 1];
  }else{
   const fibonacciSeries = recursiveFibonacci(bound - 1);
    const nextElement = fibonacciSeries[bound - 1] + fibonacciSeries[bound - 2];
    fibonacciSeries.push(nextElement);
    return fibonacciSeries;
  }
}
console.log(recursiveFibonacci(5));
output:
//Array(6) [ 0, 1, 1, 2, 3, 5 ]

Удачного кодирования. Дайте мне знать мои ошибки. Спасибо.