Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

JavaScript. Использование разных кавычек

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

    Виды кавычек в JavaScript

    В языке JavaScript существует три вида кавычек для создания строк: одинарные — 'строка 1', двойные — "строка 2" и обратные (шаблонные строки) — `строка 3`. Несмотря на то, что во многих случаях они взаимозаменяемы, у каждого варианта есть свои особенности и области применения. Правильное использование кавычек повышает читаемость кода, снижает количество ошибок и делает разработку более удобной.

    Одинарные и двойные кавычки

    Базовое использование

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

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

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

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

    Экранирование символов

    Если необходимо использовать одинаковые кавычки снаружи и внутри строки, применяется экранирование с помощью обратного слеша (\):

    Исторический контекст и традиции

    Раньше, в эпоху ES5, большинство разработчиков использовали двойные кавычки, поскольку JSON (который активно применялся для обмена данными) требовал именно их. Со временем сообщество пришло к более гибким подходам.

    Сегодня многие популярные руководства по стилю, например Airbnb JavaScript Style Guide, рекомендуют использовать одинарные кавычки для всех строк, кроме тех случаев, когда внутри строки присутствуют одинарные кавычки (тогда допускаются двойные). Такой подход помогает сохранить единообразие и уменьшить количество экранирований.

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

    Обратные кавычки (шаблонные строки)

    Главная революция в работе со строками произошла с появлением шаблонных строк (template literals) в ECMAScript 2015 (ES6). Они используют обратные кавычки (`) и предоставляют возможности, которых нет у обычных строк:

    • Интерполяция — встраивание выражений прямо в строку.
    • Многострочность — возможность писать строки, содержащие переносы, без использования \n.
    • Тегированные шаблоны — продвинутая техника для обработки строковых шаблонов.

    Интерполяция переменных

    С помощью шаблонных строк можно вставлять переменные прямо в строку — вместо конкатенации через + вы можете использовать синтаксис ${...}:

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

    Многострочность без ухищрений

    В обычных строках для перевода строки приходилось использовать \n и конкатенацию:

    С шаблонными строками переносы сохраняются как есть:

    Это особенно удобно при создании HTML-шаблонов, SQL-запросов или текстов с форматированием.

    Тегированные шаблонные строки

    Тегированные шаблонные строки (tagged templates) в JavaScript — это способ вызова функции (тега), передавая ей шаблонную строку не в круглых скобках, а напрямую. Функция-тег получает отдельно массив текстовых частей и отдельно значения всех выражений ${...}, что позволяет гибко обрабатывать и трансформировать строку.

    Вот простой пример создания тег-функции:

    Тегированные шаблоны применяются в библиотеках для стилизации (например, styled-components), для экранирования HTML, для интернационализации и т.д.

    Экранирование в шаблонных строках

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

    Использование разных кавычек

    Когда использовать каждый тип кавычек?

    Одинарные кавычки (') используются:

    • для простых строк без интерполяции;
    • в проектах, где принят такой стиль (например, в некоторых ESLint-конфигурациях).

    Двойные кавычки (") используются:

    • при работе с HTML-атрибутами;
    • когда внутри строки есть одинарные кавычки.

    Обратные кавычки (`) используются:

    • при необходимости вставки переменных;
    • для многострочных текстов;
    • при формировании сложных строковых шаблонов.

    Практические рекомендации

    1. Следуйте единому стилю
      Используйте один тип кавычек в проекте (обычно одинарные или двойные), чтобы код выглядел единообразно.
    2. Используйте шаблонные строки по назначению
      Не стоит применять обратные кавычки там, где достаточно обычной строки — это может усложнить код.
    3. Минимизируйте экранирование
      Выбирайте тип кавычек так, чтобы не приходилось часто использовать \.
    4. Используйте линтеры
      Инструменты вроде ESLint помогут автоматически поддерживать стиль кавычек.

    Резюме

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