#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».