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!