5.01. Знаки препинания в JavaScript
Общие принципы
Знаки препинания в программировании выполняют синтаксические функции, аналогичные их роли в естественных языках. Каждый символ имеет конкретное назначение в контексте кода.
Кавычки
Одинарные и двойные кавычки
Для создания строковых литералов в JavaScript допустимо использование одинарных и двойных кавычек:
let name = "John";
let message = 'Hello!';
Выбор типа кавычек зависит от содержимого строки и принятого в проекте стиля кодирования. При наличии апострофа внутри строки удобнее использовать двойные кавычки:
let sentence = "He's a developer";
При наличии двойных кавычек внутри строки предпочтительнее одинарные кавычки:
let quote = '"Hello", she said';
Шаблонные строки
ES6 вводит шаблонные строки, использующие обратные кавычки:
let greeting = `Hello, ${name}`;
Шаблонные строки поддерживают интерполяцию переменных и многострочные литералы.
Стилевые соглашения
В сообществе JavaScript преобладает использование одинарных кавычек, особенно при работе с инструментами автоматического форматирования кода. Окончательный выбор определяется стандартами конкретного проекта.
Точка, запятая и точка с запятой
Точка
Точка служит оператором доступа к свойствам и методам объектов:
console.log("Hello");
object.property;
Запятая
Запятая выполняет разделительную функцию в нескольких контекстах:
- Разделение параметров функций
- Разделение элементов массивов
- Разделение объявлений переменных в одном операторе
let x = 1, y = 2, z = 3;
function greet(name, age) {}
const array = [1, 2, 3, 4];
Точка с запятой
Точка с запятой завершает операторы в JavaScript. Механизм автоматической вставки точек с запятой делает их необязательными в большинстве случаев, однако явное использование рекомендуется для предотвращения потенциальных ошибок:
let a = 5;
let b = 10;
console.log(a + b);
Явное применение точек с запятой особенно важно при работе с минификаторами кода и в строгих режимах выполнения.
Подчеркивания
Соглашение о приватности
Одинарное подчеркивание в начале имени свойства или метода сигнализирует о внутреннем использовании:
class MyClass {
constructor() {
this._logger = "internal";
}
}
Такое именование представляет собой соглашение между разработчиками. Классический JavaScript не обеспечивает реальной приватности через подчеркивания.
Реальная приватность
Современный стандарт языка поддерживает настоящую приватность через символ решетки:
class MyClass {
#logger = "private";
}
Свойства с префиксом # недоступны извне класса.
Игнорирование в деструктуризации
Подчеркивание применяется для явного игнорирования элементов при деструктуризации массивов:
const [first, , third] = [1, 2, 3];
const [first, _, third] = [1, 2, 3];
Разделитель в числах
Подчеркивание улучшает читаемость числовых литералов:
const billion = 1_000_000_000;
const million = 1_000_000;
Вертикальная черта
Побитовое ИЛИ
Одинарная вертикальная черта представляет операцию побитового ИЛИ:
const result = valueA | valueB;
Логическое ИЛИ
Двойная вертикальная черта выполняет логическую операцию ИЛИ с коротким замыканием:
if (methodA() || methodB()) {
// methodB не вызывается, если methodA вернул истину
}
При использовании логического ИЛИ возвращается первый истинный операнд:
console.log(0 || "hello"); // "hello"
console.log(null || undefined || "default"); // "default"
Объединение типов в TypeScript
В системе типов TypeScript вертикальная черта обозначает объединение типов:
let value: string | number;
let status: "active" | "inactive" | "pending";
Такая конструкция определяет переменную, которая может принимать значения любого из перечисленных типов.