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

Javascript имеет несколько типов данных, таких как: null, undefined, boolean, число, BigInt, строка, символ.

Концептуально undefined указывает на отсутствие значения, а null указывает на отсутствие объекта (что также может служить оправданием для typeof null === «object»). Тип Number — это 64-разрядное (десятичное число) двойной точности. Тип BigInt — это числовой примитивный тип данных, который может представлять целые числа. Тип String представляет собой текстовые данные или символы. «Привет» — это набор символов, а символ — это уникальное и неизменное примитивное значение, которое можно использовать в качестве ключа свойства объекта.

В JavaScript все типы данных можно разделить на две категории:
- Примитивные типы. Типы данных, которые после определения не могут быть изменены, называются примитивными типами данных.
- Непримитивные типы: типы данных, которые можно изменить после определения, называются непримитивными типами данных.

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

Основываясь на строгости типов данных, каждый язык программирования можно разделить на строго и слабо/слабо типизированный. Javascript — это язык программирования слабого/слабого типа. Язык программирования со свободной типизацией определяется как язык, в котором определение типа данных переменной не требуется.

Пример простоты преобразования этого типа данных показан в операторном равенстве (==) и операторном строгом равенстве (===). Равенство сравнивает оба значения, если типы данных разные, типы будут изменены, но при строгом равенстве оно будет определено как неодинаковое значение, если типы данных разные.

Javascript также является объектом, создающим языки, и может быть неизменяемым. Объекты означают данные, которые включают свойства и первичный ключ в каждом имени объекта. Как сделать объект неизменяемым?

- Использование Object.freeze() :

"use strict";
let employee = {
    firstName: "Mickey",
    lastName: "Mouse",
    age: 10
};

employee.firstName = "Donald";

console.log(employee); // {firstName: "Donald", lastName: "Mouse", age: 10}

// freeze the employee object
Object.freeze(employee);

employee.firstName = "Mickey"; // Uncaught TypeError
  • Использование метода Object.seal()
"use strict";
let employee = {
    firstName: "Mickey",
    lastName: "Mouse",
    age: 10
};

// Seal the employee object
Object.seal(employee);

employee.firstName = "Donald";

console.log(employee); // {firstName: "Donald", lastName: "Mouse", age: 10}

//add a new property
employee.department = "Accounting"; // Uncaught TypeError

//delete an existing property
delete employee.age; // Uncaught TypeError

В Javascript также есть уникальные приемы копирования. Задача копирования в JavaScript довольно проста для примитивных типов данных. Метод делится на два: поверхностное копирование и глубокое копирование.

  • Поверхностное копирование. Метод поверхностного копирования вставляет точную копию определенного объекта в другой объект. Он в основном используется для копирования элементов одномерного массива, где он копирует только элементы, присутствующие на первом уровне. Он только копирует ссылочные адреса в другой объект.
  • Глубокое копирование: это рекурсивная процедура копирования объекта. Этот механизм создает новый объект, а затем клонирует в него пару ключ-значение указанного объекта.

Процедуру можно увидеть на этом фото

В Javascript мы также узнаем о области действия, подъеме и TDZ.

  • Область действия – это область программы, в которой можно получить доступ к переменной. Другими словами, область видимости определяет доступность/видимость переменной.
  • Подъем – это поведение JavaScript по умолчанию, заключающееся в перемещении объявлений в верхнюю часть содержащей их области. Когда код интерпретируется, интерпретатор незаметно перемещает (поднимает) все объявления переменных и функций в верхнюю часть области, в которой они объявлены.
  • TDZ — это термин, описывающий состояние, когда переменные недоступны. Они есть в области видимости, но не объявлены.

Переменные let и const существуют в TDZ с начала своей области видимости до тех пор, пока они не будут объявлены. Можно также сказать, что переменные существуют в TDZ с момента их привязки (когда переменная привязывается к области видимости, в которой она находится) до ее объявления (когда для этой переменной в памяти зарезервировано имя).

Когда переменная объявляется внутри функции, контекстом выполнения для этой переменной является функция, в которой она объявлена. Если он объявлен снаружи, контекст выполнения является глобальным контекстом. Это справедливо и для функций.

В JavaScript есть два типа контекста: контекст функции и глобальный контекст. Код, выполняемый в глобальной области, а не внутри функции, помещается в глобальный контекст. Глобальный контекст обычно обозначается как main . И он обычно создается первым.

JavaScript Engine создает структуру данных стека, в которой контексты выполнения функции помещаются при создании, когда функция вызывается или вызывается. Эта структура данных называется Call Stack.

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

  • Глобальная область действия: переменная объявлена ​​как глобальная и доступна для доступа во всем коде.
  • Область действия: переменная, объявленная внутри функции, доступ к которой можно получить внутри самой функции.
  • Область блока: переменная, объявленная в блоке, и эти переменные необходимы в блоке.
  • Лексическая область видимости. В лексической среде внутренняя функция может обращаться как к внешним переменным, так и к переменным внутри функции.

Скрытие информации в javascript - это метод скрытия переменной или информационного объекта в Javascript.

Существует несколько способов скрыть информацию в привилегированных областях. Замыкания, свойства (геттеры и сеттеры) и фабрики — все это способы, с помощью которых вы можете улучшить свои проекты, скрывая сложность за общедоступными интерфейсами. em> твой код выставляется.

Далее

Из того, что мы узнали выше, давайте ответим на этот обучающий код

пусть б = 1;
function hi () {
const a = 1;
пусть б = 100;
б++;
console.log(a,b);
}
//console.log(a);
console.log(b);
привет();
console.log(b);

Выход :

  • 1
  • 1 101
  • неопределенный

Вывод значения «b» будет равен 1, потому что он объявлен вне области действия функции. Таким образом, при печати «b» будет напечатана глобальная область видимости. 1 101 является результатом функции, напечатанной

Вывод — ошибка, потому что переменная «a» находится вне функции или области видимости. Как мы решили эту проблему: мы должны переместить консольный журнал a в функцию или создать переменную вне области действия функции или просто удалить комментарий, потому что переменная «a» уже находится в функции.