Использование хэша местоположения для передачи параметров между функциями javascript

#javascript #html

#javascript #HTML

Вопрос:

Предположим, у нас есть простая функция, которая вызывает другую функцию, передающую параметр:

 let funcA = () => {
    let parameter;
    ....
    funcB(parameter)
}

let funcB = (parameter) => {
    ...
}
 

Будет ли считаться плохой практикой реализовать ту же логику, передавая параметр через хэш url, используя инициированное .onhashchange событие?

 let funcA = () => {
    let parameter;
    ...
    window.location.hash = parameter;
}

let funcB = (parameter) => {
    ...
}

window.onhashchange = () => {funcB(window.location.hash.substring(1))}
 

Схематически 2 подхода заключаются в следующем:

функция A — (параметр) —> функция B

функция A —(параметр) —> хэш — (параметр)—> функция B

Конечно, в целом, 1-й вариант более чистый, простой, и нет необходимости передавать переменную через 3-й «сервис» (хэш url).

Тем не менее, я работаю над веб-приложением, которое уже реализует «хэш-логику», и на самом деле использование 2-го варианта может привести к более чистому коду, который легче понять и поддерживать.

Есть ли какие-либо недостатки во 2-м подходе (например, худшая производительность)?

Комментарии:

1. Так же, как вторая пара глаз здесь — я очень скептически отношусь к утверждению, что 2-й вариант может быть «проще для понимания». Также функция onhashchange, как написано выше, не будет работать; вам понадобится что-то вроде window.onhashchange = function(e) { funcB(window. location.hash.substring(1) }

2. Что касается 2-й части вашего комментария, вы правы, я отредактировал код. Что касается 1-й части, веб-приложение уже считывает хэш-переменные при загрузке и обновляет их во время взаимодействия пользователя. Рассматривая это конкретное приложение как исключение, я думаю, что описанная хэш-логика действительно была бы более чистой. Хэш будет действовать как сервис для обмена данными между несколькими функциями, используя событие «onhashchange».