Чтение cookie в JavaScript: краткий и межбраузерный метод
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
function getCookie(name) {
let match = document.cookie.match(`(?:^|; )${name}=([^;]*)`);
return match ? decodeURIComponent(match[1]) : undefined;
}
Функция getCookie(name)
является образцом емкости и эффективности. Передайте её имя cookie, и она возвратит его значение. Если cookie не найден, функция вернет undefined
. Это удобный способ извлечения данных из строки document.cookie
посредством регулярных выражений.
Регулярные выражения для быстроты, а не циклы
Регулярные выражения позволяют быстро отыскать нужное вам cookie, как истребитель преодолевает дистанции, в то время как скорость циклов можно сравнить с велосипедом. Этот подход не требует пошагового перебора всех значений, а позволяет сразу извлечь нужное значение из document.cookie
.
Совместимость с интернет-стандартами
Данная функция соответствует стандарту RFC 2109, обеспечивая эквивалентность с различными конфигурациями cookie и корректное кодирование символов, что объясняет её эффективность при работе с cookie.
Применение современных возможностей JavaScript
Используйте последние возможности JavaScript, включая стрелочные функции и опциональный чейнинг, чтобы сделать код ещё компактнее, не теряя в функциональности.
Кеширование на профессиональном уровне
Чтобы увеличить эффективность при многократных вызовах функции, можно кешировать значения в объектных маппингах, что существенно сократит время доступа к данным.
Продолжение традиций
Используя в коде современный синтаксис JavaScript, стоит помнить о поддержке старыми версиями браузеров. Важно, чтобы функция продолжала быть доступной и добавляла функциональность в различных окружениях.
Визуализация
Представьте функцию JavaScript, которая, словно библиотекарь, начинает поиск в фонде:
🍪 Библиотека: [cookie1=value, cookieX=value2, cookieTarget=value3, cookie4=value4]
На поиски 'cookieTarget' библиотекарь отправляется:
function readCookie(name) { ... } // Встречаем нашего библиотекаря📚
Начинается поиск:
🔎📖: 'cookieTarget'
И вот, нужная "книга" найдена!
Обнаружена 📗: 'cookieTarget=value3'
Библиотекарь в совершенстве ориентируется в своих "фондах" и моментально находит нужное.
Оптимизация производительности
Превратите getCookie
в глобальную функцию, чтобы избежать лишней интерпретации кода, которая может замедлить производительность. Функциональность JavaScript ценится всеми, но не в ущерб быстродействию системы.
Экранирование спецсимволов
Cookie могут включать спецсимволы. Воспользуйтесь регулярными выражениями для их корректного обработки, а также encodeURIComponent
и decodeURIComponent
для сохранения целостности данных.
Говорим "нет" устаревшим данным
Актуальные данные превыше производительности. Избегайте сохранения устаревших данных и стремитесь к равновесию между актуальностью и быстродействием.
Готовы к ещё более компактной функции?
Попробуем найти компромисс между малым объемом и эффективностью. Возможно, увлажнить до такого размера:
const c = n => (document.cookie.match(`(?:^|; )${n}=([^;]*)`)||[])[1] || undefined;
Данная функция, несмотря на свой небольшой объем, сохраняет весь необходимый функционал.
Время проверенные методы
Не забывайте о проверенных временем методах, таких как QuirksMode.org или jQuery.cookie. Эти ресурсы предлагают отлаженные методы, подходящие для различных требований проектов.