Синтаксис JavaScript: основные концепции
Пришло время рассмотреть основные концепции синтаксиса JavaScript, такие как константы, переменные, операторы, операнды, идентификаторы, комментарии, ключевые слова и литералы. Также мы узнаем о чувствительности к регистру, пробельных символах и точках с запятой.
JavaScript — это один из самых популярных и мощных языков программирования, который позволяет создавать интерактивные и динамические веб-сайты. Однако, чтобы успешно использовать JS, необходимо хорошо знать его синтаксис, то есть набор правил и соглашений, которые определяют, как писать и оформлять код. После прочтения этой статьи вы сможете лучше понимать и анализировать код на JavaScript, а также избегать распространенных ошибок и проблем.
Константы
Константы — это именованные значения, которые не могут быть изменены во время выполнения программы. Константы используются для хранения постоянных данных, таких как числа Пи или скорости света. В JavaScript константы объявляются с помощью ключевого слова const:
const PI = Math.PI // это константа
const SPEED_OF_LIGHT = 299792458; // это константа
Константы должны быть инициализированы при объявлении и не могут быть повторно присвоены. Попытка сделать это приведет к ошибке.
Переменные
Переменные служат для хранения и управления данными в программе. В JavaScript переменные объявляются с помощью ключевых слов var, let или const:
var x = 10; // это переменная, объявленная с помощью var
let y = 20; // это переменная, объявленная с помощью let
const z = 30; // это переменная, объявленная с помощью const
В зависимости от ключевого слова определяется поведение переменной: var и let могут быть присвоены новым значениям в любой момент программы, например:
var x = 10; // переменная, объявленная с помощью var
x = 15; // это новое значение переменной x
let y = 20; // переменная, объявленная с помощью let
y = 25; // это новое значение переменной y
const z = 30; // переменная, объявленная с помощью const
z = 35; // приведет к ошибке: нельзя изменить значение константы
Переменные, объявленные с помощью var, имеют функциональный или глобальный область видимости (scope), то есть они доступны в пределах функции или всего скрипта. Переменные, объявленные с помощью let или const, имеют блочный область видимости (scope), то есть они доступны только в пределах блока кода, в котором они объявлены.
Операторы
Операторы — это символы или слова, которые выполняют определенные действия над значениями или переменными. Операторы могут быть унарными (применяются к одному значению), бинарными (применяются к двум значениям) или тернарными (применяются к трем значениям). В JavaScript есть следующие типы операторов:
- Арифметические операторы — это операторы, которые выполняют математические операции, такие как сложение, вычитание, умножение и деление.
+ // сложение
- // вычитание
* // умножение
/ // деление
% // модуль числа
** // показатель степени
- Операторы сравнения — это операторы, которые сравнивают два значения и возвращают логическое значение (true или false).
> // больше
< // меньше
>= // больше или равно
<= // меньше или равно
== // равно
!= // не равно
- Логические операторы — это операторы, которые соединяют или инвертируют логические значения.
|| // ИЛИ
&& // И
! // НЕ
?? // оператор нулевого слияния
- Побитовые операторы — это операторы, которые работают с битами (единицами и нулями) значений.
& // побитовое И
| // побитовое ИЛИ
^ // побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ
~ // побитовое НЕ
<< // сдвиг битов влево с заполнением пустых слотов нулями
>> // сдвиг битов вправо с заполнением пустых слотов значениями крайнего левого бита
>>> // сдвиг битов вправо с заполнением нулями
- Операторы присваивания — это операторы, которые присваивают значение переменной или свойству объекта.
= // оператор присваивания
+= // сложение с присваиванием
-= // вычитание с присваиванием
*= // умножение с присваиванием
/= // деление с присваиванием
%= // присваивание с остатком
**= // присваивание степени
- Условный (тернарный) оператор — это оператор, который возвращают одно из двух значений в зависимости от условия.
const x = 10;
const y = 20;
const z = x > y ? 'x больше y' : 'x меньше или равно y'; // это тернарный оператор условия ?
console.log(z); // выводит 'x меньше или равно y'
- Оператор (...) — это оператор, который может назваться spread или rest в зависимости от того, где и как он используется. Он позволяют работать с итерируемыми объектами, такими как массивы или строки.
Операнды
Операнды — это значения или переменные, над которыми выполняются операторы. Операнды могут быть литералами (например, числами или строками), переменными (например, x или y), свойствами объектов (например, person.name или person.age) или результатами выражений (например, x + y или Math.sqrt(z)), например:
const x = 10; // значение х - это литерал
const y = x; // значение y - это переменная х
const z = x + y; // значение z - это выражение, состоящее из оператора + и двух операндов x и y
const person = {
age:18,
};
const w = z + 10 + "20" + person.age + (20*2); // z,10,"20", person.age, (20*2) - операнды в этом случае
console.log(w) // выведет 30201840
Идентификаторы
Идентификаторы — это имена, которые используются для обозначения переменных, констант, функций, объектов и других сущностей в JavaScript. Идентификаторы должны следовать определенным правилам:
- Идентификаторы могут состоять из букв (латинских или не латинских), цифр, символов подчеркивания ( _ ) и знаков доллара ($)
- Идентификаторы не могут начинаться с цифры
- Идентификаторы не могут быть равны ключевым словам или зарезервированным словам JavaScript
- Идентификаторы чувствительны к регистру, то есть различаются заглавные и строчные буквы.
const name = 'Alice'; // это допустимый идентификатор
const _age = 25; // это допустимый идентификатор
const $salary = 1000; // это допустимый идентификатор
const имя = 'Алиса'; // это допустимый идентификатор
const 1name = 'Alice'; // это недопустимый идентификатор, начинается с цифры
const for = 'loop'; // это недопустимый идентификатор, совпадает с ключевым словом
const Name = 'Alice'; // это другой идентификатор, отличный от name
Пробельные символы
Пробельные символы — это символы, которые не отображаются на экране, но используются для форматирования кода и улучшения его читаемости. Они включают в себя пробелы, табуляции и переводы строк. В JS пробельные символы игнорируются интерпретатором, то есть они не влияют на результат выполнения кода. Чаще всего их используют для:
- Разделения идентификаторов, ключевых слов, операторов и литералов.
let x=10; // это допустимый код, но плохо читаемый
let x = 10; // это допустимый код и хорошо читаемый
- Cоздания отступов в блоках кода. Отступы показывают вложенность и иерархию блоков кода. Обычно используются четыре пробела или одна табуляция для каждого уровня отступа. Например:
function test() {
if (true) {
console.log('Hello');
} else {
console.log('Bye');
}
} // этот код имеет правильные отступы
function test() {
if (true) {
console.log('Hello');
} else {console.log('Bye');
}
} // этот код не имеет отступов и плохо читаемый
- Создания переводов строк в строковых литералах. Перевод строки — это спецсимвол, который обозначает конец строки. В JavaScript перевод строки обозначается как \n.
const str1 = 'Hello\nWorld'; // это строковый литерал с переводом строки
console.log(str1); // выводит Hello на одной строке и World на другой строке
const str2 = 'Hello World'; // это строковый литерал без перевода строки
console.log(str2); // выводит Hello World на одной строке
Точка с запятой
Точка с запятой — это символ, который используется для завершения инструкций. Он показывают интерпретатору, где заканчивается одна инструкция и начинается другая.
const x = 10; // это инструкция с точкой с запятой
const y = 20; // это инструкция с точкой с запятой
const z = x + y; // это инструкция с точкой с запятой
console.log(z); // это инструкция с точкой с запятой
В JavaScript точки с запятой не обязательны в большинстве случаев, так как интерпретатор может автоматически вставлять их в конце инструкций, если они отсутствуют. Это называется автоматической вставкой точек с запятой (automatic semicolon insertion, ASI). Однако, есть некоторые случаи, когда точки с запятой обязательны или рекомендуется использовать, например:
- Когда две или более инструкции находятся на одной строке:
const x = 10; const y = 20; // это две инструкции на одной строке, разделенные точкой с запятой
- Когда инструкция начинается с символов (, [ или `, которые могут быть интерпретированы как продолжение предыдущей инструкции:
let x = 10 // это инструкция без точки с запятой
(function() {console.log('Hello')})() // это инструкция, начинающаяся с (, которая может быть интерпретирована как вызов функции x
// Этот код приведет к ошибке SyntaxError: Unexpected token (
// Чтобы избежать этого, нужно поставить точку с запятой после первой инструкции
let x = 10; // это инструкция с точкой с запятой(function() {console.log('Hello')})() // это инструкция, начинающаяся с (, которая не будет интерпретирована как вызов функции x
// Этот код выполнится без ошибок и выведет Hello
Комментарии
Комментарии — это части кода, которые не выполняются интерпретатором, но служат для пояснения или документации кода. кроме того их используют для улучшения читаемости и понимания кода, а также для отладки или отключения частей кода. В JS есть два типа комментариев:
- Однострочные комментарии — это пометки, которые начинаются с двух символов слеша // и занимают одну строку кода. Однострочные комментарии могут быть расположены в любом месте кода, но не могут переноситься на другую строку:
const x = 10; // это однострочный комментарий
// это еще один однострочный комментарий
- Многострочные комментарии — это заметки, которые начинаются с символов /* и заканчиваются символами */. Многострочные комментарии могут занимать несколько строк кода и могут быть расположены в любом месте кода:
/* это многострочный комментарий
который занимает две строки кода */
const x = 10; // это инструкция
/* это еще один многострочный комментарий
который содержит инструкцию внутри
console.log(x); // эта инструкция не выполнится,
так как она внутри комментария */
Шебанг комментарии
Шебанг комментарии — это специальные пометки, которые начинаются с символов #!, занимают первую строку скрипта и применяются для указания интерпретатора, который должен выполнить скрипт:
#!/usr/bin/env node // это шебанг комментарий, который указывает на интерпретатор Node.js
console.log('Hello'); // это инструкция
Шебанг комментарии игнорируются интерпретатором JavaScript, но могут быть полезными при запуске скриптов из командной строки или других сред.
Ключевые слова
Ключевые слова — это слова, которые имеют специальное значение или функцию в JavaScript. Они не могут быть использованы в качестве идентификаторов, так как они зарезервированы для языка. Полноценный список ключевых слов вы можете найти в этой статье. Использование этих слов не по назначению будет выдавать ошибку.
Литералы
Литералы — это значения, которые записываются в коде непосредственно, без использования переменных или выражений. Литералы могут быть разных типов, таких как числа, строки, булевы значения, объекты и массивы. Чтобы почитать про них подробнее — нажмите сюда.
Чувствительность к регистру
JavaScript — это язык программирования, который чувствителен к регистру, то есть различает заглавные и строчные буквы. Это означает, что идентификаторы, ключевые слова, литералы и другие элементы кода должны быть написаны точно так же, как они были объявлены или определены, например:
const name = 'Alice'; // это переменная с именем name в нижнем регистре
const Name = 'Bob'; // это другая переменная с именем Name в верхнем регистре
console.log(name); // выводит Alice
console.log(Name); // выводит Bob
const x = 10; // это переменная с именем x в нижнем регистре
const y = X + 5; // это ошибка, так как X не определен (должно быть x)