get() - это метод объекта URLSearchParams, который возвращает значение параметра из строки запроса.
Строка запроса - это часть URL после ?.
https://learn-javascript.ru/search?q=javascript&page=2
В этом адресе есть параметры q и page. Метод get() позволяет получить их значения без ручного разбора строки.
const params = new URLSearchParams("q=javascript&page=2");
console.log(params.get("q")); // "javascript"
console.log(params.get("page")); // "2"
Синтаксис
params.get(name)
Где name - имя параметра, значение которого нужно получить.
Метод возвращает:
- строку, если параметр найден
null, если параметра нет
const params = new URLSearchParams("q=javascript");
console.log(params.get("q")); // "javascript"
console.log(params.get("sort")); // null
get() только читает значение и не изменяет объект URLSearchParams.
Получение параметров из строки
Если у вас уже есть строка параметров, её можно передать в URLSearchParams.
const params = new URLSearchParams("category=courses&page=3");
const category = params.get("category");
const page = params.get("page");
console.log(category); // "courses"
console.log(page); // "3"
Строку можно передавать как с ?, так и без него.
const params = new URLSearchParams("?q=javascript&page=2");
console.log(params.get("q")); // "javascript"
Это удобно при работе с window.location.search.
const params = new URLSearchParams(window.location.search);
const query = params.get("q");
Использование вместе с URL
Если есть полный адрес, сначала создают объект URL, а затем читают параметры через searchParams.
const url = new URL("https://learn-javascript.ru/search?q=javascript&page=2");
console.log(url.searchParams.get("q")); // "javascript"
console.log(url.searchParams.get("page")); // "2"
Такой вариант удобен, когда нужно разобрать не только параметры, но и сам адрес.
const url = new URL("https://learn-javascript.ru/catalog?category=books&page=2");
const category = url.searchParams.get("category");
const page = url.searchParams.get("page");
console.log(category); // "books"
console.log(page); // "2"
Важно: URLSearchParams работает именно с параметрами, а не со всем URL целиком. Для полного адреса лучше использовать new URL().
Если параметра нет
Если параметр отсутствует, get() вернёт null.
const params = new URLSearchParams("q=javascript");
console.log(params.get("page")); // null
Поэтому для значений по умолчанию часто используют оператор ??.
const params = new URLSearchParams("q=javascript");
const page = params.get("page") ?? "1";
console.log(page); // "1"
?? подставляет значение справа только тогда, когда слева null или undefined.
Это аккуратнее, чем ||, если пустая строка может быть нормальным значением.
const params = new URLSearchParams("q=");
const query = params.get("q") ?? "javascript";
console.log(query); // ""
Здесь параметр q есть, просто его значение пустое.
Пустой параметр и отсутствующий параметр
Пустой параметр и отсутствующий параметр - не одно и то же.
const params = new URLSearchParams("q=");
console.log(params.get("q")); // ""
console.log(params.get("page")); // null
Если нужно проверить именно наличие параметра, используйте has().
const params = new URLSearchParams("q=");
console.log(params.has("q")); // true
console.log(params.has("page")); // false
get() отвечает на вопрос “какое значение?”, а has() - “есть ли такой параметр?“.
get() возвращает строки
Значения параметров URL всегда читаются как строки.
const params = new URLSearchParams("page=2&active=true");
console.log(params.get("page")); // "2"
console.log(params.get("active")); // "true"
Если нужно число, преобразуйте значение явно.
const params = new URLSearchParams("page=2");
const page = Number(params.get("page") ?? "1");
console.log(page); // 2
Если нужно логическое значение, сравните строку с ожидаемым значением.
const params = new URLSearchParams("active=true");
const isActive = params.get("active") === "true";
console.log(isActive); // true
Если параметр повторяется несколько раз
Один и тот же параметр может встретиться в URL несколько раз.
const params = new URLSearchParams("tag=javascript&tag=dom&tag=async");
console.log(params.get("tag")); // "javascript"
get() в такой ситуации возвращает только первое значение.
Если нужны все значения, используйте getAll().
console.log(params.getAll("tag")); // ["javascript", "dom", "async"]
Это важно для фильтров, тегов, выбранных категорий и других случаев, где один ключ может иметь несколько значений.
Кодирование и обычное значение
В URL пробелы, русские буквы и некоторые символы кодируются. При чтении через get() вы получаете обычное значение.
const url = new URL("https://learn-javascript.ru/search?q=уроки javascript");
console.log(url.searchParams.get("q")); // "уроки javascript"
Это одна из причин использовать URL и URLSearchParams, а не разбирать строку адреса вручную.
Практический пример
Допустим, на странице каталога нужно прочитать фильтры из адреса.
function getCatalogFilters() {
const url = new URL(window.location.href);
return {
category: url.searchParams.get("category") ?? "all",
sort: url.searchParams.get("sort") ?? "new",
page: Number(url.searchParams.get("page") ?? "1"),
};
}
const filters = getCatalogFilters();
console.log(filters);
Если адрес такой:
https://learn-javascript.ru/catalog?category=books&sort=price&page=2
функция вернёт объект с прочитанными значениями.
Частые ошибки
Ожидать undefined, если параметра нет
const params = new URLSearchParams("q=javascript");
console.log(params.get("page")); // null
get() возвращает null, а не undefined.
Забывать, что значение приходит строкой
const params = new URLSearchParams("page=2");
console.log(params.get("page") + 1); // "21"
Если нужно число, сначала преобразуйте значение.
const page = Number(params.get("page") ?? "1");
console.log(page + 1); // 3
Использовать get() для нескольких значений
const params = new URLSearchParams("tag=javascript&tag=dom");
console.log(params.get("tag")); // "javascript"
Если параметр может повторяться, берите все значения через getAll().
console.log(params.getAll("tag")); // ["javascript", "dom"]
Быстрая памятка
get()читает значение параметра изURLSearchParams- метод принимает имя параметра
- если параметр есть, возвращается строка
- если параметра нет, возвращается
null - пустое значение возвращается как
"" get()возвращает первое значение, если параметр повторяется- для всех значений одного параметра используйте
getAll() - для проверки наличия параметра используйте
has() - числа и boolean-значения нужно преобразовывать вручную
- с полным адресом удобно работать через
new URL(...).searchParams.get(...)
Коротко
get() нужен, чтобы получить значение одного query-параметра из URLSearchParams. Он возвращает строку, null для отсутствующего параметра и только первое значение, если параметр повторяется. Для полного URL обычно берут new URL(address).searchParams.get("name"), а для нескольких значений используют getAll().