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 };
При доступе к свойствам объекта существует два способа работы со свойствами.
- Обозначение через точку
Мы можем записать (изменив имя) и прочитать (при входе в консоль)значение свойства, используя точечную нотацию.
//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');