JavaScriptСерия#1

Немного предыстории

В 2009 году умный инженер взял движок JS с открытым исходным кодом в chrome(v8) и встроил его в программу на C++. Он назвал эту программу Node.

Узнайте, кто этот умный инженер.😉

До появления Node.js JavaScript в основном работал в веб-браузерах и в основном использовался для сценариев на стороне клиента. В основном он использовался для повышения интерактивности и удобства пользователей веб-сайтов. JavaScript позволял разработчикам манипулировать объектной моделью документов (DOM) веб-страниц, обрабатывать пользовательские события и выполнять различные операции на стороне клиента.

Однако JavaScript был ограничен работой в среде браузера и не имел прямого доступа к системным ресурсам или возможности выполнять задачи на стороне сервера. Это ограничило его использование для фронтенд-разработки.

После появления Node.js, который произвел революцию в JavaScript, позволив ему работать на стороне сервера. Node.js — это среда выполнения, построенная на движке Chrome V8 JavaScript, которая позволяет выполнять JavaScript вне браузера. В нем была представлена ​​управляемая событиями неблокирующая модель ввода-вывода, которая сделала ее пригодной для создания масштабируемых и эффективных серверных приложений.

Node.js перенес JavaScript на серверную часть, открыв новые возможности для комплексной разработки с использованием одного языка программирования. Он предоставлял доступ к системным ресурсам, операциям файловой системы, сетевому взаимодействию и позволял разработчикам создавать веб-серверы, API, приложения реального времени и многое другое.

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

Node.js также представил экосистему npm (Node Package Manager), которая стала одним из крупнейших и наиболее динамичных репозиториев пакетов, в котором размещены тысячи библиотек и сред с открытым исходным кодом, что значительно ускорило процесс разработки.

Внедрение Node.js превратило JavaScript из языка, в основном используемого для клиентской разработки, в универсальный и мощный язык для создания приложений с полным стеком, что позволило разработчикам JavaScript работать со всем веб-стеком и за его пределами.

Разница между ECMAScript и JavaScript

Скрипт ECMA — это всего лишь спецификация.

JavaScript — это язык программирования, соответствующий этой спецификации.

Итак, у нас есть организация под названием ECMA, которая отвечает за определение стандартов.

Они заботятся об этой спецификации сценария ECMA.

Первая версия была выпущена в 1997 году.

После 2015 года они выпускают новую версию каждый год.

Переменные

До выпуска ES6 мы использовали ключевое слово var для объявления переменной.

После ES6 лучшая практика заключается в использовании ключевого слова let для объявления переменной.

Использование двойных или одинарных кавычек для определения строк является личным предпочтением разработчика.

Обычно для определения строк мы используем одинарные кавычки в JavaScript.

Константы

const interestRate = 0.3;

Примитивные типы

  • Строка
let name = 'Yeran'; //String Literal

//String Literal is just a fancy name given to a string
  • Число
let age = 19; //Number Literal

//Number Literal is just a fancy name given to a number.

/*
In JavaScript there is no int,float types.
All types are of type number.
*/
  • логическое значение
let isApproved = false; //Boolean Literal

//Boolean Literal is just a fancy name given to a number.
  • не определено
let firstName = undefined; 

/*
let firstName; //This is also undefined.
We usually don’t explicitly tell that is undefined. (let firstName = undefined;) 

Undefined is also a type as well as a value.
*/
  • нуль
let selectedColor = null;
//We use null in situations where we want to explicitly clear the value of the variable.

Динамическая типизация

У нас есть 2 типа языков программирования.

i) Статическая

ii) Динамический.

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

В динамическом языке, таком как JavaScript, тип переменной может изменяться во время выполнения.

Боковое примечание №1

Java — это язык программирования со статической типизацией. В Java каждая переменная и выражение имеют определенный тип, который известен во время компиляции. Тип переменной определяет тип значений, которые она может содержать, и операции, которые можно с ней выполнять. Java требует явного объявления типов для переменных и выполняет проверку типов во время компиляции для обеспечения безопасности типов. Это означает, что тип переменной определяется и проверяется перед выполнением программы, что обеспечивает большую надежность и выявляет потенциальные ошибки, связанные с типом, на ранних этапах процесса разработки.

Ссылочные типы

  • Объект
  • Множество
  • Функция

Объекты

Будь то JavaScript, Java или любой другой язык программирования, объект похож на объект в реальной жизни.

Подумайте о человеке в реальной жизни. У человека есть имя, возраст, адрес… и т.д.

Это свойства человека.

У нас такая же концепция в JavaScript.

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

let person = {
  name : 'Yeran',
  age : 19
};

При доступе к свойствам объекта существует два способа работы со свойствами.

  1. Обозначение через точку

Мы можем записать (изменив имя) и прочитать (при входе в консоль)значение свойства, используя точечную нотацию.

//Changing the name
person.name = 'Savi';

//logging to console
consolt.log(person.name);

2. Обозначение скобок

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

person['name'] = 'Victor';

(В) Какая запись лучше?

Обозначение через точку немного лаконичнее и короче. Так что это должно быть вашим выбором по умолчанию.

Однако нотация скобок имеет свое собственное применение.

Иногда вы не знаете имя целевого свойства до момента выполнения.

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

Это будет выбрано пользователем во время выполнения.

Таким образом, у нас может быть другая переменная где-то еще (например, выбор)

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

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

let selection = 'name';
person[selection] = 'Victor'

Эй, нотация скобок кажется немного сложной для восприятия, все в порядке. Просто придерживайтесь точечной нотации, которая является чистой и точной.😉

Множество

Иногда в вашем приложении вы можете иметь дело со списком объектов или элементов.

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

Массив — это структура данных, которую мы используем для хранения/представления списка элементов.

let selectedColors = ['red', 'black'];
selectedColors[2] = 'blue'; //adding a new element to the array
console.log(selectedColors);

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

Поэтому объекты в массиве, а также размер массива являются динамическими.

let selectedColors = ['red', 'black'];
selectedColors[2] = 1; //adding a new element (number) to the array
console.log(selectedColors);

Технически массив является объектом. Таким образом, как и объект person, который мы определили ранее, массив имеет пару ключ:значение или свойства, к которым мы можем получить доступ, используя точечную нотацию.

Функция

Функция — это, по сути, набор операторов, которые выполняют задачу или вычисляют значение.

function greet(name){
  console.log('Hello' + name);
}

greet('Yeran');

имя — это параметр функции приветствия.

Yeran – это аргумент функции приветствия.

Параметр — это то, что у нас есть на момент объявления.

Аргумент — это фактическое значение, которое мы указываем для этого параметра.

Многих разработчиков путают эти два слова.😅

Функция может иметь несколько параметров.

function greet(firstName, lastName){
  console.log('Hello' + firstName + ' ' + lastName);
}

greet('Yeran', 'Kods');