Muito bom!
Só pra complementar, a função também poderia ser assim:
function verificarInterseccao(a1, a2, b1, b2) {
return !((b2 < a1) || (b1 > a2));
}
Ou seja, se uma das condições for verdade, retornará falso. Mas quando eu tenho algo como !(cond1 || cond2), eu posso trocar para (!cond1) && (!cond2) - as condições se invertem e troco o || por &&. Portanto, ficaria assim:
function verificarInterseccao(a1, a2, b1, b2) {
return b2 >= a1 && b1 <= a2;
}
Como o operador && é short circuit, se a primeira condição não for verdadeira, ele nem testa a segunda, mantendo o funcionamento de já parar se o primeiro caso for falso.
Por fim, existe uma explicação parecida aqui, vale a leitura.