Javascript - executa várias janelas diferentes.

Estou enfrentando um pequeno problema aqui. Eu tenho conhecimentos básicos sobre Javascript e quero fazer o seguinte:

Agora, quando você rola para baixo, o menu fica menor. quando você voltar, ele voltará ao normal. Eu chamo esse evento com window.onscroll:

var diff = 0;
function effects(){
var topDistance = (document.documentElement &&     document.documentElement.scrollTop) ||  document.body.scrollTop;
var clientWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var clientHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

if(topDistance > diff){ 
    diff = topDistance;
    if(clientWidth > 1024){
        if(topDistance > 300){
            document.getElementById("header").style.marginTop= "-100px";
        }
    }
}else if(topDistance < diff){
    diff = topDistance;
    if(clientWidth > 1024){
        if(topDistance > 300){
            document.getElementById("header").style.marginTop= "0";
        }
    }
}
}

window.onscroll = effects();

Agora eu quero que outra função tenha alguns efeitos nos meus botões de chamada para ação, vamos chamar a função "test", mas se eu quiser fazer isso da mesma maneira como acima, as funções de efeitos não funcionarão mais:

function test(){
//do something
}
window.onscroll = test();

Qualquer ajuda é bem vinda! Acho que não será um grande desafio fazer isso, mas acho que estou fazendo errado. (PS: NO JQUERY POR FAVOR)

questionAnswers(2)

yourAnswerToTheQuestion