Что такое JavaScript?

Javascript - это сценарий или язык программирования. Это синхронный и однопоточный язык. Однопоточный означает, что js выполняет одну команду за раз, а синхронный означает, что код выполняется в определенном порядке.

Все в javascript происходит внутри контекста выполнения.

Итак, что означает вышеприведенное утверждение? Он просто заявляет, что всякий раз, когда мы пытаемся выполнить код javascript, создается новый контекст выполнения.

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

В блоке памяти переменные и функции хранятся в виде пар ключ-значение.

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

В блоке Code весь код javascript присутствует для выполнения.

Как выполняется код javascript?

Выполнение кода в основном состоит из двух этапов. А именно фаза выполнения памяти и фаза выполнения кода

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

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

Что такое стек вызовов?

Стек вызовов похож на то, как работает стек: он подталкивает контекст выполнения в стек при каждом вызове / вызове и выталкивается из стека после удаления стека выполнения.

Основное назначение стека вызовов - поддерживать порядок выполнения контекста выполнения.

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

Подъем в Javascript?

Подъем относится к процедуре или методологии, в которой интерпретатор выделяет память для объявлений переменных и функций до выполнения кода. Объявления, сделанные с использованием var, инициализируются значением по умолчанию undefined. Объявления, сделанные с использованием let и const, не инициализируются как часть подъема.

console.log(a); //undefined
var a = 10;

Приведенный выше код является примером подъема.

Проще говоря, это означает, что вы можете получить доступ к функциям / переменным перед их инициализацией.

Пусть vs Const

«Let» и «Const» эти ключевые слова были введены в ES6. Они используются для создания переменных, похожих на ключевое слово «var», но подождите, если они похожи, то почему такие разные имена? Хорошо, поэтому сначала мы поговорим о «let vs var», поэтому let похож на var, но вы не можете повторно объявить то же ключевое слово снова.

Например:

var a = 10;
var a = 20; // This works fine
let c = 10;
let c = 20; //Error Identifier ‘c’ has already been declared.
//You can do something like this,
let x = 5;
x = 15; // You can assign new values to the variable.

Говоря о главном различии, var имеет функциональную область видимости, но let имеет блочную область видимости. Область видимости блока означает все, что заключено в фигурные скобки {}, цикл for оператора if.

Блочная область видимости vs Функциональная область видимости

Блокировать

function add(){
 let sum = 0;
 for(let i=1;i<5;i++){
   sum += i;
 }
 console.log(i); //ReferenceError: i is not defined
 console.log(sum);
}

Аналогичный код, но с ключевым словом var

function add(){
 var sum = 0;
 for(int i=1;i<5;i++){
   sum += i;
 }
 console.log(i); // Outputs: 5
 console.log(sum);
}

Теперь Let vs Const

когда мы создаем константную переменную, вы не можете дальше изменять ее значение, поэтому она действует как константа, значение которой нельзя изменить;

и вам нужно инициализировать какое-то значение переменной const, иначе это вызовет ошибку инициализации.

Eg:

const a = 15;
a = 10; //Uncaught TypeError: Assignment to constant variable
const x; Const declarations’ require an initialization value

Значит, переменные, объявленные с помощью const, неизменяемы, верно? Не совсем так. Возьмем, например,

const person = {
name:”Aniket”
}
person.name = “Aniket Habib”; // This works fine

В приведенном выше коде мы просто меняем свойство объекта, а не переназначаем его.

Так являются let и const лапы?

Ну, они ... Но они во временной мертвой зоне

Что такое временная мертвая зона?

Проще говоря: время между подъемом и инициализацией называется tdz.

Его также можно назвать состоянием, когда переменные недоступны. Они входят в сферу охвата, но не декларируются.

Итак, почему let и const имеют фазу tdz?

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

Спасибо за чтение. Я знаю, что это не «Все», но до следующего раза подбадривает ✌️;

Удачного кодирования;)