Olá, Pessoal! Falarei hoje sobre O hash, ou location.hash, que é uma propriedade que seta ou retorna o texto de âncora de uma URL, que é aquela parte visível no link que te permite saber o caminho que você percorreu. Ou seja, se você tivesse um link de exemplo http://www.exemplo.com/teste.htm#parte2 , e você quisesse descobrir a parte âncora, faria:
let x = location.hash;
O retorno seria o valor #parte2.
Você também pode setar outro valor para essa parte usando location.hash, fazendo:
location.hash = "parte5";
Assim, você mudaria o valor para #parte5, deixando o link como http://www.exemplo.com/teste.htm#parte5.
O evento onhashchange é disparado quando essa parte do link muda; ele, então, chama uma determinada função para ser executada, e pode aparecer de três maneiras:
window.onhashchange = funcRef;
<body onhashchange="funcRef();">
window.addEventListener("hashchange", funcRef, false);
Nós temos as propriedades oldURL e newURL inclusas nesse evento que armazenam, respectivamente, a URL anterior e a posterior que são modificadas por ele.
Conhecer e utilizar essas propriedades e eventos auxilia bastante na composição futura de sites, então espero que tenha sido um artigo informativo!
Bons estudos!