Сегодня мы обсудим около 10 основных проблем JavaScript.

1.Правда

В JavaScript настоящее значение — это значение, которое считается true при обнаружении в логическом контексте. Все значения истинны, если только они не определены как ложные (т. е. кроме false, 0, -0, 0n, "", null, undefined и NaN). JavaScript использует приведение типов в логических контекстах. Примеры истинных значений в JavaScript (которые будут приведены к истине в логических контекстах и, таким образом, выполнят блок if):

if (true)
if ({})
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)

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

null — это специальное значение, означающее "нет значения". null — это особый объект, поскольку typeof null возвращает 'object'.

С другой стороны, undefined означает, что переменная не была объявлена ​​или ей не было присвоено значение.

3. двойное равное (==) против тройного равного (===)

Вкратце: == по своей сути преобразует тип, а === не преобразует тип.

Double Equals (==) проверяет только равенство значений. Это означает, что перед проверкой значений он преобразует типы переменных, чтобы они соответствовали друг другу.

С другой стороны, Triple Equals (===) проверяет, имеют ли сравниваемые переменные одинаковое значение И одного и того же типа.

4. Вычислить факториал числа, используя цикл for

Возвращает факториал предоставленного целого числа. Если целое число представлено буквой n, факториал представляет собой произведение всех положительных целых чисел, меньших или равных n. Факториалы часто обозначаются сокращенной записью n!. Например: 5! = 1 * 2 * 3 * 4 * 5 = 120

function factorialize(num) {
  if (num === 0 || num === 1)
    return 1;
  for (var i = num - 1; i >= 1; i--) {
    num *= i;
  }
  return num;
}
factorialize(5);

5. Вычислить факториал в рекурсивной функции

Возвращает факториал предоставленного целого числа. Если целое число представлено буквой n, факториал представляет собой произведение всех положительных целых чисел, меньших или равных n. Факториалы часто обозначаются сокращенной записью n!. Например: 5! = 1 * 2 * 3 * 4 * 5 = 120

function factorialize(num) {
  if (num < 0) 
        return -1;
  else if (num == 0) 
      return 1;
  else {
      return (num * factorialize(num - 1));
  }
}
factorialize(5);

6. Создайте ряд Фибоначчи, используя цикл for

Последовательность Фибоначчи записывается так:

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

Последовательность Фибоначчи — это целочисленная последовательность, в которой первые два члена равны 0 и 1. После этого следующий член определяется как сумма двух предыдущих членов.

// program to generate fibonacci series up to n terms

// take input from the user
const number = parseInt(prompt('Enter the number of terms: '));
let n1 = 0, n2 = 1, nextTerm;

console.log('Fibonacci Series:');

for (let i = 1; i <= number; i++) {
    console.log(n1);
    nextTerm = n1 + n2;
    n1 = n2;
    n2 = nextTerm;
}

7. Создайте ряд Фибоначчи рекурсивным способом

Последовательность Фибоначчи записывается так:

0, 1, 1, 2, 3, 5, 8, 13, 21, ...

Последовательность Фибоначчи — это целочисленная последовательность, в которой первые два члена равны 0 и 1. После этого следующий член определяется как сумма двух предыдущих членов. Следовательно, n-й термин представляет собой сумму (n-1)-го термина и (n-2)-го термина.

// program to display fibonacci sequence using recursion
function fibonacci(num) {
    if(num < 2) {
        return num;
    }
    else {
        return fibonacci(num-1) + fibonacci(num - 2);
    }
}

// take nth term input from the user
const nTerms = prompt('Enter the number of terms: ');

if(nTerms <=0) {
    console.log('Enter a positive integer.');
}
else {
    for(let i = 0; i < nTerms; i++) {
        console.log(fibonacci(i));
    }
}

8. Проверьте, является ли число простым числом или нет

Простое число — это положительное целое число, которое делится только на 1 и само на себя. Например, 2, 3, 5, 7, 11 являются первыми несколько простых чисел.

// program to check if a number is prime or not

// take input from the user
const number = parseInt(prompt("Enter a positive number: "));
let isPrime = true;

// check if number is equal to 1
if (number === 1) {
    console.log("1 is neither prime nor composite number.");
}

// check if number is greater than 1
else if (number > 1) {

    // looping through 2 to number-1
    for (let i = 2; i < number; i++) {
        if (number % i == 0) {
            isPrime = false;
            break;
        }
    }

    if (isPrime) {
        console.log(`${number} is a prime number`);
    } else {
        console.log(`${number} is a not prime number`);
    }
}

// check if number is less than 1
else {
    console.log("The number is not a prime number.");
}

9. Облако событий

Всплывающие события — это метод распространения событий в HTML DOM API, когда событие находится в элементе внутри другого элемента, и оба элемента зарегистрировали дескриптор этого события. Это процесс, который начинается с элемента, вызвавшего событие, а затем поднимается до содержащихся элементов в иерархии. При всплытии событий событие сначала захватывается и обрабатывается самым внутренним элементом, а затем распространяется на внешние элементы.

10. Пузырь событий

Все в JavaScript происходит внутри «контекста выполнения». Всякий раз, когда запускается программа JavaScript, создается контекст выполнения.

var number=10;  //line1 
function add(n) //line2
{               //line3
var result=n+n; //line4
return result;  //line5
} 

var result1=add(4); //line6

когда мы запускаем код, создается глобальный контекст выполнения (GEC). Он создается в два этапа:

1)Этап создания или создание памяти

На этом этапе javascript выделяет память для всех переменных и функций, присутствующих в программе. Переменные сохраняются со значением undefined, а функция сохраняется со всем кодом, присутствующим в этой конкретной функции. Для приведенного выше кода переменная number сохраняется со значением undefined, а функция add сохраняется со значением, заключенным в фигурные скобки {…}. Результат1 также является переменной, поэтому он сохраняется со значением undefined.

2)Этап выполнения кода

На этом этапе происходит основное выполнение, и javascript выполняет код построчно. Теперь значение число изменено с undefined на 10. Затем он переходит на следующую строку, поскольку выполнять нечего, он переходит на строку 5. В строке 5 происходит вызов функции. Когда вызывается новая функция, в GEC создается новый контекст выполнения.