Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pablo.p48l0

Passar função como parâmetro

Recommended Posts

Eu to precisando executar certas funcoes em javascript, dependendo do resultados de outras sacou? entao teria que passar as funcoes como parametros, e dai chamar elas de acordo com o resultado de outras..

algo como: func('a','b',func('c','d',func('e','g')))

 

eu fazia isso com eval() dentro do javascript, mas so consguia chegar num 2º nivel, pois duplicava aspas dentro de aspas.. e preciso agora chegar a um 5º nivel ou mais..

 

eu esperava poder fazer:

 

func(a,b,func) {

 

if(a==1) func.call;

 

}

 

mas nao é assim que funciona, a funcao vem sendo executada logicamente da direita pra esquerda automaticamente.

 

ENTÃO, COMO POSSO FAZER PRA EXECUTAR O SEGUNDO NÍVEL APENAS SE OS PARAMETROS DO NIVEL ANTERIRO SATISFIZEREM OS MEUS CRITÉRIOS?

 

DEU PRA ENTENDER?

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria uma 'regra da cadeia', vai executar de dentro pra fora...

 

contanto que as tuas funções 'retornem' algo.. acontece naturalmente...

mostre o caso real..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tive o mesmo problema, sua função é muito parecida com a minha e eu creio que está correta, não tem muito o que fazer nessa situação, exceto...

 

Vamos lá, tai sua função... ok:

func(a,b,func) {
if(a==1) func.call;
}

 

O nosso problema...

Quando Executa, foo no meu exemplo, foo é executada simultaneamente junto com func();
func(1,0,foo());

 

A solução...

Eu resolvi simplesmente armazenando a função numa variável função, e passando a variável como parâmetro:

var fn = function(){ foo(); }

func(1,0,fn);

 

Agora sim a função é passada como parâmetro, e é executada apenas se estiver de acordo com as condições.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.